免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2085 | 回复: 5
打印 上一主题 下一主题

[C] 相同一个程序源码,为什么在不同版本REDHAT不同BITS环境里编译后运行性能相差很大? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-04-21 00:26 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
9
程序设计版块每日发帖之星
日期:2015-10-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-01 06:20:00程序设计版块每日发帖之星
日期:2015-11-02 06:20:00每日论坛发贴之星
日期:2015-11-02 06:20:00程序设计版块每日发帖之星
日期:2015-11-03 06:20:00程序设计版块每日发帖之星
日期:2015-11-04 06:20:00程序设计版块每日发帖之星
日期:2015-11-06 06:20:00数据库技术版块每周发帖之星
日期:2015-12-02 15:02:47数据库技术版块每日发帖之星
日期:2015-12-08 06:20:00
2 [报告]
发表于 2017-04-21 19:41 |只看该作者
本帖最后由 wlmqgzm 于 2017-04-21 19:51 编辑

我觉得可能的一个原因是: C/C++底层库对性能影响比较大。

最近在做的一个高性能KV数据库haisql_memcache,4核CPU下大约40万QPS,  性能从最早的10多万QPS到现在的40万QPS,  主体的代码变化不大, 主要是做了很多c/C++底层库,现在已经积累了超过1万行C/C++库,性能不断的提升。
前一阶段完成替换的库是:shared_ptr 和 unique_ptr, 自研库 性能比std库提升了一倍多。
已经替换了一批C/C++的标准库中过于陈旧的内容。如果新的模块上在算法方面没有创新,那么重写是毫无意义的, -O3优化下,同样算法的模块,性能几乎不会有变化。

目前该KV数据库已经比 memcache 快70%, 要知道我的网络层是层层封装的Boost:asio,  内存是动态申请的(memcache的内存是预分配的),单核也比Redis单核性能更快。
我的代码中全部是C++的,大量使用std::string, std::vector等各种C++对象, 除库代码外,只有到5000行代码,性能超越C语言编写的,号称经典的memcache,确实是非常不容易,也说明了C++基础库对于性能和研发的重大影响。
也许有人会说 : C/C++库都是经典, 不不可超越的, 那么, 这里也是一个例子,即使是memcpy这样看上去无法优化的库代码,其实也是有办法优化的。怎样写出一个更快的 memset/memcpy ? - 知乎用户的回答 - 知乎      https://www.zhihu.com/question/35172305/answer/61584927

论坛徽章:
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
3 [报告]
发表于 2017-04-23 16:43 |只看该作者
本帖最后由 yulihua49 于 2017-04-23 16:45 编辑
BetonArmEE 发表于 2017-04-21 00:26
发现一个奇怪的现象,相同一个程序源码,为什么在不同版本REDHAT不同BITS环境里编译后运行性能相差很大?
...


你的64位更慢?
两个可能。
1.硬件是32位,装64位系统是仿真的,比32位还慢。这个目前可能性不大。---你好像真是32位硬件哦!!!!
2.64位机进行32位运算更慢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2017-04-23 20:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
5 [报告]
发表于 2017-04-23 23:18 |只看该作者
我对底层没有深入研究哎,但是,我想问一下:64位比32位内存优势大,但是速度一定快吗?为什么?总线访问速度快?还是因为什么,如果64位性能不比比32位快,那比如
说,64位的系统,指针、各种东西,都需要更多的处理,但是这个32位的虚拟机跑的是相同的硬件会不会有什么优势?比如一次总线能处理俩变量?
   

论坛徽章:
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
6 [报告]
发表于 2017-04-25 08:17 |只看该作者
BetonArmEE 发表于 2017-04-23 20:33
回复 3# yulihua49

我家里是64位的硬件PC,装了32位的windows xp,装了vmware station,里面装64位的re ...

这个不好解释。但是我在几年前做过一个大数据量计算的系统测试,开始用的32位系统(软硬件都是32位的实体机),后来改用64位系统,软硬件都是64位,64位性能是3倍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP