Java代码转C代码经验
来源:互联网 发布:上海网络教育统考包过 编辑:程序博客网 时间:2024/06/06 08:59
最近在做一些分词模型,我在网络上参加了一些开源讨人论坛的讨论并下载相关的源代码,那些源代码要不就是JAVA就C#,速度感觉不是很快!在基本理解的情况下,我打算将其代码转化为C代码,以提高其速度。
里面一些要进行字符处理,感觉JAVA太上层,有点不好掌控。C语言自由度大,易于操作和处理。
我首先针对JAVA中的BEAN包进行了C语言改写,在进行改写的时候,感觉C虽然速度快,但是处理很烦琐,比如像Java中一个类ArrayList,如果里面装不同的对象的话,我就得为其重新写一些重复的代码,比如ArrayList<SegNode>实例和ArrayList<int>实例,这两个实例本来在C++用一个STL就能搞定,但是到了C语言下,就无能为力了。
为此我在GOOGLE上,搜索了相关的C语言的模板文章,并在一个负责编写gLib的网站了,找到相应的实现方法,就是用一些宏进行处理,
比如:
#define ArrayList(name, type, iLen, blFlag) //name为变量名,type为变量的类型,iLen表示申请的空间大小 /
{/
.../
}
这种方法在一定的程序上可以实现模板的功能但是,由于宏不能进行类型检查,所以必须使用者十分熟悉这些原理和代码才能进行很好的调用,使用这个方法还有一个不好的地方就是,由于宏是替代的,如果用多了话,就会出现代码膨胀,另外用宏来编写代码,很不容易进行调试。
如果要解决安全调用这些类似模板的宏,你可以在这之上编写相关的函数,比如
针对ArrayList(name,type,iLen)宏, 可以根据不同的类型编写相应的函数
Bool SegNode_ArrayList_Construstor(SegNode *ptSn, int iLen) //
{
Bool blFlag = false;
ArrayList(*ptSn, SegNode, iLen, blFlag); //invoke the macro
return blFlag;
}
...//
但是又好像失去了模板的功用,但是由于在定义不能的类型的相关的构造函数和析构函数的时候,都调用同一个
宏,相对来说,作者的编码工作量是减少了。但是对于使用者来说又多了许多没有必要的函数名字。
看来在代码的易用和重用这两个方面是此消彼长的关系。
还有在针对对象进行C语言改写时,应该遵循以下几个方面的原则:
1、C语言函数输出变量尽量放到输出参数中,返回值应返回函数错误类型
2、针对某个对象进行编程时,应该将对象名字作为其前缀+_函数名字
3、函数模块应遵循:
{
int i; //1. var declarations
...
assert(..); //2. assertions.
if (..) //3. check params
{... }
i = 0; //4. initializing....
Obj_Constructor(); // 5. constructors
.... //6.body of func.
Obj_Destructor(); //7.destructors
return (...) //8.returns
}
8个基本步骤,这样,基本上不会出现什么内存溢出的问题。
呵呵,,,如果有什么不足的地方请版上的高手指点指点。
<script type="text/javascript"><!--google_ad_client = "pub-1307274723602242";/* 728x15, 创建于 09-3-6 */google_ad_slot = "3124229201";google_ad_width = 728;google_ad_height = 15;// --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
- Java代码转C代码经验
- Java代码转C代码经验
- C语言代码编写经验
- java 代码修改-小经验
- 代码经验
- java代码转 objective-c
- c代码调用java代码
- C 角度计算经验代码集合
- 写java代码经验整理-持续更新
- 写java代码的一些真实经验!
- C调用java代码
- C调用java代码
- java 调用C代码
- YUV420转RGB的代码(C++/JAVA)
- c代码回调java中的代码
- C代码回调java代码
- Java代码中调用C/C++代码
- C#"CodeSmith代码批量生成模板"制作经验分享
- 编程活动中几个不良现象
- 危险字符过滤的类
- ASP.NET中Hashtable和ArryList
- 有责任感的中国人请您耐心看完,毕业了买不起房似乎并不是那么糟!
- uClinux启动过程
- Java代码转C代码经验
- 关于p2p的一些思考
- GNC扩展之_attribute_机制
- 使用Tomcat6连接池
- 哥们你有做到吗?
- margin和padding之我见
- HTTP协议简介
- 我在汇才的亲身经历与感受
- SqlDataReader类型的变量,会自动Close.