- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2015-06-28 10:39 编辑
ctrigger 发表于 2015-06-27 20:45 ![]()
你写个比java快10倍的c程序,show一下才有说服力嘛。
据说99%的程序员写不出比java更高效的c程序。。。 ...
你说的也不算错。的确 99%的Cer写不出性能和可靠性比JAVA高的应用。
这也就是,开发高性能、高可靠性系统,采用C,成本太高的原因。你不知道找谁能解决问题,除非你手下就有这类人。
我说的,是我们实际的系统。代码有。
最高层的函数,很简单。但你看不出什么。底层,代码太多,又看不过来。
还好,底层是封装的工具库,可重用的。对JAVAer来说,就是框架。
C写框架很难(框架就是公共类库,要处理各种数据, 就是“泛型”处理),所以框架很少。原因是,C的结构不能反射,在运行时,无法知晓人家给你的结构是个啥。
C++的STL,部分的解决了“泛型”的问题,但是有个严重的局限性,所有涉及的结构或对象,必须编译期解决。
问题留到运行期就没辙了。
我们,实现了数据库泛型,就是,利用数据库的数据字典,解决运行时数据结构的问题。
然后,解决了一系列数据库高性能访问的技术,这些技术,本身的步骤很繁琐,每次现写开销很大,于是,我们利用数据库泛型,做了一套高性能数据库工具。
这个工具是比照JAVA的Hibernate做的,比他发展了,具有他的方便性,效率又是顶尖的,同时又是“泛型”的。
比方说,批量(数组)插入,我只需6个步骤:
DAU_mk(&i_DAU,SQL_Connect,tabname);//利用数据库的数据字典生成DAU(Data Access Unit)内部的数据结构
OAD_init(&i_OAD,&i_DAU,data,batch_num);//ORACLE Array Describe
OAD_mk_insert(&i_OAD,stmt);//生成insert语句,used by stmt,绑定变量
OAD_exec(&i_OAD,begin,num);// 更换data里的值,可以重复多次
OAD_free(&i_OAD);
DAU_free(&i_DAU);
可以看出,语句生成和绑定变量都是一次,执行多次。
构建和析构函数保证了内存安全,使得即使是新手,也能写出高效可靠的应用。
补充一点,第三句那个stmt,要求你给一个空间即可,它要在那里生成语句。这样就实现了彻底的泛型,可以处理任何表,只要你指出表名。
就比hibernate好多了,它还要你给出语句,就不能处理任意表了。
这东西线程安全,你可以安排多线程并行(每个线程独立的SQL_Connect),这样充分利用了RAC多节点多优势,处理速度是其他工具的N倍(在多节点的RAC系统上)。
|
评分
-
查看全部评分
|