最近在做一些分词模型,我在网络上参加了一些开源讨人论坛的讨论并下载相关的源代码,那些源代码要不就是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 语法和特性。