免费注册 查看新帖 |

Chinaunix

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

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

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

本来俺是这么声明缓冲区的:
unsigned char buff[a->size]={0};

到VC下不得不改成:
unsigned char *buff = malloc(a->size);
memset(buff,0,a->size);



不要以为memset,malloc的速度很快,你malloc 1m的空间看看,然后memset看看。这和32几k的空间差别非常大。

论坛徽章:
0
42 [报告]
发表于 2009-08-13 21:50 |只看该作者
路过,现在对这些玩意一点都不感兴趣了。

论坛徽章:
0
43 [报告]
发表于 2009-08-13 21:56 |只看该作者
刚才洗衣服了,真累,你们也别吵了,我直说吧,多媒体计算,不是说浮点数怎么样,而是SIMD,x64这方面的寄存器多很多,而且,我记得某先进开源编译器生成x64代码比x86要方便。
SIMD,最后强调一下。

论坛徽章:
0
44 [报告]
发表于 2009-08-13 22:28 |只看该作者
汗,找到原因了

VC在-O2下居然不开SSE指令优化

论坛徽章:
0
45 [报告]
发表于 2009-08-13 22:31 |只看该作者
原帖由 lbaby 于 2009-8-13 21:50 发表
路过,现在对这些玩意一点都不感兴趣了。


感慨啊,SIMD指令这种事,就交给编译器好了
花一周优化的代码,轻轻松松被花两周想出来的新算法超过

论坛徽章:
0
46 [报告]
发表于 2009-08-14 10:54 |只看该作者
原帖由 koolcoy 于 2009-8-13 14:03 发表
个人感觉这个是64位和32位的区别:
x64位多8个通用寄存器, 8个多媒体寄存器, 因此在x64的linux下面函数调用绝大多数情况下是用寄存器传参数(64位windows不一样)。 另外x86不支持eip相对寻址, 因此x86的PIC代 ...


没有看懂。在32位模式下8个通用寄存器是eax,ebx,ecx,edx,esi,edi,ebp,esp, eip本来就不是通用寄存器。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
47 [报告]
发表于 2009-08-14 13:07 |只看该作者
原帖由 数码兔 于 2009-8-14 10:54 发表


没有看懂。在32位模式下8个通用寄存器是eax,ebx,ecx,edx,esi,edi,ebp,esp, eip本来就不是通用寄存器。

如果是PIC代码的话, 这8个寄存器中还有一个将用来干别的事情, 无法做通用寄存器使用了。 gcc具体用哪一个我记不清了, 可以反汇编看看。

x64就不一样了, 它的rip还多了一个功能(这个功能就是x86中被占用的那个寄存器的功能), 就是方便PIC代码生成, 这样x64下面, 16个通用寄存器都可以用。

论坛徽章:
0
48 [报告]
发表于 2009-08-14 14:33 |只看该作者
我在64位的vista上面,用VS2005,使用64位编译运行一段程序的时间是使用32位编译运行同一段程序的时间的1/2。

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
49 [报告]
发表于 2009-08-14 17:13 |只看该作者
Windows2008的网络性能很好的,不知道这上面nginx的性能怎么样
实在不行上IIS7试一试

论坛徽章:
0
50 [报告]
发表于 2009-08-15 02:07 |只看该作者

回复 #39 OwnWaterloo 的帖子

C++中malloc要进行显示的类型转换。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP