免费注册 查看新帖 |

Chinaunix

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

大家测过64linux vs 32windows的性能没有 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-13 13:25 |只看该作者 |倒序浏览
最近有段代码,发现在两个环境下速度差3倍,有点太夸张了..

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2009-08-13 13:40 |只看该作者
3倍也不算夸张呀

论坛徽章:
0
3 [报告]
发表于 2009-08-13 13:42 |只看该作者
汗,3倍还不夸张

现在比较痛苦的是,windows下边没有类似gprof的工具可用

论坛徽章:
0
4 [报告]
发表于 2009-08-13 13:43 |只看该作者
会不会一个用 debug, 一个用release模式啊?

论坛徽章:
0
5 [报告]
发表于 2009-08-13 13:45 |只看该作者
Intel有一个VTurn什么的,记不清楚名字了,比gprof强多了。

论坛徽章:
0
6 [报告]
发表于 2009-08-13 13:49 |只看该作者
原帖由 群雄逐鹿 于 2009-8-13 13:43 发表
会不会一个用 debug, 一个用release模式啊?


Linux下边debug都比win下release快,这才叫人郁闷

论坛徽章:
0
7 [报告]
发表于 2009-08-13 13:50 |只看该作者
原帖由 prolj 于 2009-8-13 13:45 发表
Intel有一个VTurn什么的,记不清楚名字了,比gprof强多了。


就叫VTurn,这鸟东西用过,Linux平台支持不好,windwos下没有非商业授权

论坛徽章:
0
8 [报告]
发表于 2009-08-13 13:57 |只看该作者
原帖由 reiase 于 2009-8-13 13:49 发表


Linux下边debug都比win下release快,这才叫人郁闷

不玩笑,这是代码的问题,调用了某些系统调用吧?
Nginx的Win版性能就不行,因为Linux有epoll用,Win下没有。

原帖由 reiase 于 2009-8-13 13:50 发表


就叫VTurn,这鸟东西用过,Linux平台支持不好,windwos下没有非商业授权

我不会用这高级东西,自己计数也是一种方法,用宏DEBUG了。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
9 [报告]
发表于 2009-08-13 14:03 |只看该作者
个人感觉这个是64位和32位的区别:
x64位多8个通用寄存器, 8个多媒体寄存器, 因此在x64的linux下面函数调用绝大多数情况下是用寄存器传参数(64位windows不一样)。 另外x86不支持eip相对寻址, 因此x86的PIC代码实际上只有7个通用寄存器可用, 扣除ebp, esp,就只有5个了, 编译器的寄存器优化几乎没有施展的空间。 而x64的PIC代码仍然有16个通用寄存器可用, 编译器的寄存器优化要好得多。
另外如果代码中大量使用了long long的话x86的性能损失也非常大。
还要看你用的是什么编译器, 编译参数是什么, 有没有使用线程安全等。
所以3倍已经很给你面子了

评分

参与人数 1可用积分 +5 收起 理由
net_robber + 5 我很赞同

查看全部评分

论坛徽章:
0
10 [报告]
发表于 2009-08-13 14:06 |只看该作者
原帖由 prolj 于 2009-8-13 13:57 发表

不玩笑,这是代码的问题,调用了某些系统调用吧?
Nginx的Win版性能就不行,因为Linux有epoll用,Win下没有。


我不会用这高级东西,自己计数也是一种方法,用宏DEBUG了。


没任何系统调用,就两malloc和memset,纯粹二维数组上的算法

p阿姨,问你个另外的问题.
你觉得C++的跨平台能力如何,就比如GCC下和VC下,C++的差异大不大。

可能后边设计到复杂算法,老板说用STL会比较好。
但是我现在写的好些算法,最后都强制把链表,树转化成数组来加速遍历。
这种情况下STL提供的算法是不是就没啥意义了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP