免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: linux_c_py_php
打印 上一主题 下一主题

[其他] 聊聊JAVA吧,C++同志们。 [复制链接]

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
21 [报告]
发表于 2015-06-28 08:29 |只看该作者
本帖最后由 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系统上)。

评分

参与人数 1信誉积分 +10 收起 理由
zsszss0000 + 10 很给力!

查看全部评分

论坛徽章:
15
2015七夕节徽章
日期:2015-08-21 11:06:172017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之新疆
日期:2016-01-25 14:01:34IT运维版块每周发帖之星
日期:2016-01-07 23:04:26数据库技术版块每日发帖之星
日期:2016-01-03 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-10 06:20:00
22 [报告]
发表于 2015-06-29 09:13 |只看该作者
Java的开发效率高,比C++要高10倍,而执行效率相差不大,根据我之前的测试只能提升不到20%左右,这样算下来性价比不高,所以Java才会大行其道
一个语言的兴起必然是有其道理的,C++的没落也是错过了黄金发展的十年,当Java一堆库和框架出来的时候,C++还在意淫性能,然而这并没有什么卵用
回复 19# yulihua49


   

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
23 [报告]
发表于 2015-06-29 11:11 |只看该作者
本帖最后由 yulihua49 于 2015-06-29 11:37 编辑
heguangwu 发表于 2015-06-29 09:13
Java的开发效率高,比C++要高10倍,而执行效率相差不大,根据我之前的测试只能提升不到20%左右,这样算下来 ...

如果你认为,性能的需求是有限的,就算你对。
实际上,很多场合性能需求是无限的。
JAVA与C的性能对比,如果你约束二者用同样方法,那么差别如你所说。
事实上,同一件事,我们常使用C自己的做法,那么性能就会有数量级的变化。
我们利用指针的优势就大大提升性能。
例如,我21楼,JAVA是无法模仿的。即使我自己写一个JAVA接口,我的JAVA比较面,但可以咨询一些高手。我也只能说“可以实现”,性能嘛。。。。。。
一些正则表达式处理,C可以指针定位,无需分配空间再拷贝出来,就地即可处理。在语句生成的时候就是这样。用JAVA做同样事,就费事太多了,仅仅在串里替换几个字符(这种情况,JAVA正则拷贝出来的子串没有任何意义,我只想要在原位替换成别的),就要兜好大圈子 string -->stringbuffer-->string,new啊,copy 啊,一个语句里,我要替换好几十处呢?在这一点上,性能降低何止一个数量级。
开发这段代码的时间,JAVA比C只多不少。

。。。。。当然这只是个别情形。。。。。

一般的,就算你对。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
24 [报告]
发表于 2015-06-29 11:30 |只看该作者
讨论的很嗨,让我们继续。

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
25 [报告]
发表于 2015-06-29 11:52 |只看该作者
本帖最后由 windoze 于 2015-06-29 11:55 编辑

回复 22# heguangwu

看着Android手机的电量刷刷的往下掉,你就会发现性能还是有卵用的。

现在手机为什么要堆多核?因为性能上不去
Android为什么要把Dalvik换成ART?因为性能上不去
Google为什么不直接用Java做MapReduce?因为性能上不去
…………

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
26 [报告]
发表于 2015-06-29 12:31 |只看该作者
windoze 发表于 2015-06-29 11:52
回复 22# heguangwu

看着Android手机的电量刷刷的往下掉,你就会发现性能还是有卵用的。

卵还是有用的,骟不得啊!

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
27 [报告]
发表于 2015-06-29 12:58 |只看该作者
的确,虽然没有什么卵用,但的确很多卵在用,我如果不用会很心塞。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
28 [报告]
发表于 2015-06-29 13:07 |只看该作者
Java的性能好强大啊。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
29 [报告]
发表于 2015-06-29 13:08 |只看该作者
linux_c_py_php 发表于 2015-06-29 12:58
的确,虽然没有什么卵用,但的确很多卵在用,我如果不用会很心塞。

C++是个卵,程序员不用C++,就像男人没有卵,太没面子了。

论坛徽章:
15
2015七夕节徽章
日期:2015-08-21 11:06:172017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:07:30shanzhi
日期:2016-06-17 17:59:3115-16赛季CBA联赛之四川
日期:2016-04-13 14:36:562016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之新疆
日期:2016-01-25 14:01:34IT运维版块每周发帖之星
日期:2016-01-07 23:04:26数据库技术版块每日发帖之星
日期:2016-01-03 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-10 06:20:00
30 [报告]
发表于 2015-06-29 14:51 |只看该作者
如果Android用C开发,有两个结果:1)我们等不到Android出来的那一天;2)去垃圾堆找他吧
Google为什么不用Java开发MapReduce?那我问你Apache社区为什么不用C++开发Hadoop?Spark为什么不用C++开发?Storm为什么不用C++开发?用什么语言取决于企业本身的人力储备,但开源社区大规模软件开发C++真心不多,开发效率过低是C++的诟病,某些性能没那么严格的系统为什么大家要用C++开发,老板是要看经济效益的。

回复 25# windoze


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP