最近在做一些分词模型,我在网络上参加了一些开源讨人论坛的讨论并下载相关的源代码,那些源代码要不就是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">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
最近在做一些分词模型,我在网络上参加了一些开源讨人论坛的讨论并下载相关的源代码,那些源代码要不就是JAVA就C#,速度感觉不是很快!在基本理解的情况下,我打算将其代码转化为C代码,以提高其速度。里面一些要进行字符处理,感觉JAVA太上层,有点不好掌控。C语言自由度大,易于操作和处理。我首先针对JAVA中的BEAN包进行了C语言改写,在进行改写的时候,感觉C虽然速度快,但是处理很烦琐,比如像Java
国内大多数大学的软件相关专业大多强制学生学习c和
Java
,但.net 的几个
语言
可以说是选学的。
由于visual studio在windows平台上使用相对方便,一些同学会在上大学的
Java
课之前自学.net开发技术。
这一类同学就
需要
一些
代码
转
换技巧来帮助学习
Java
。
转
载请说明作者Nukepayload2
在这之前我吐槽一下TinyMCE编辑器,它不能正确染色一些vb.net的关键...
从
java
转
c
语言
在专升本之前,以前的学校计算机学习主要是应用型围绕着
Java
来开展课程的,期间也做了不少Maven+SSM开发的项目,并能在实训课上独立开发这样的项目,但在专升本后,步入本科学习阶段,不管是学习数据结构课程,还是为以后考研做准备,因为考研专业课算法题很多都强调用C,C++
语言
开发,所以为了快速从
Java
转
C
语言
,这里我就记录下其中主要差别,以及着重要点.
C
语言
通常通过return返回函数运行结果(true,false),而通过指针参数返回结果数据
一般来讲,当对象为指针时需用
背景介绍最近网络上流传的华为方舟编译器很火,随着热度的提高,华为也将技术原理做了简单披露。我们来看官方的描述,原文链接:https://baijiahao.baidu.com/s?id=1632292071046828780&wfr=spider&for=pc。此时此刻,这套编译器华为还没有开源。作为安全行业的从业者,我想大家很清楚安卓下的所谓C
语言
就是JNI(
JAVA
java
代码
转
换为C
代码
工具是一种用于将
Java
语言
编写的程序
转
换为C
语言
代码
的工具。这种工具的目的是将
Java
代码
转
换为C
代码
,以便在
需要
使用C
语言
编写的环境中进行编译和运行。
这种工具的主要作用是实现
Java
程序的移植。由于C
语言
是一种广泛使用的编程
语言
,许多嵌入式系统、操作系统和硬件设备都
需要
使用C
语言
编写程序。因此,将
Java
程序
转
换为C
语言
代码
可以使得
Java
程序可以在这些系统和设备上运行。
在进行
Java
代码
转
换为C
代码
时,工具会将
Java
语法和结构
转
换为等效的C
语言
语法和结构。它会将
Java
类和方法
转
换为C
语言
的结构体和函数,将
Java
的面向对象特性
转
换为C的结构体和函数指针,以及
转
换
Java
类的继承关系为C结构体的嵌套和函数指针的调用。
这种工具的优势在于可以帮助开发人员快速将
Java
代码
移植到C
语言
环境中,而无需手动重写整个程序。它能够保留
Java
程序的功能和逻辑,并且生成的C
代码
具有较高的可读性,易于理解和维护。
当然,由于
Java
和C之间存在一些语义和特性的差异,完全自动地将
Java
代码
转
换为C
代码
并不容易。因此,在使用这种工具进行
转
换时,开发人员仍然
需要
手动进行一些调整和修复,以确保
转
换后的
代码
能够正确地编译和运行。此外,工具还
需要
不断地更新和改进,以适应新的
Java
语法和特性。