编译选项的性能问题?在64位win7下

temp_acc 2009-11-07 03:17:17
首先是MSDN上的解释
x86 将程序集编译为由兼容 x86 的 32 位公共语言运行时运行。

Itanium 将程序集编译为由采用 Itanium 处理器的计算机上的 64 位公共语言运行时运行。

x64 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行时运行。

anycpu(默认值)将程序集编译为在任意平台上运行。


自己做了一个图片缩小的小程序 使用x86,x64,anycpu编译成3个版本, 在win 7 x64下测试, x64和anycpu在64位os下自动以64位模式运行,x86则以32位兼容模式运行。

让这三个版本完成通一个任务:获取99张图片的大小等信息并显示,结果:

x86:13秒

x64和anycpu:19秒

实验了多次都是同样的结果,64位模式比32位模式要慢很多。

原因不解, 可能除了便于选项外,在代买中也要使用64位“优化”的数据类型?或者是64位的.net framework的性能不如32位?


下载链接
http://cid-e1e342f6ca4cc854.skydrive.live.com/self.aspx/%e8%87%aa%e4%bd%9c%e3%82%bd%e3%83%95%e3%83%88/EasyPictureResizer/EasyPictureResizer^_0.2^_x86^_x64^_anycpu.zip
...全文
520 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aimeast 2009-11-30
  • 打赏
  • 举报
回复
嗯,想问一下,x86的.net程序能在64位framework上运行吗?
temp_acc 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lerit 的回复:]
要在同等环境下测试才有可比性,同样的内存大小,同样的cpu频率,同样的操作系统,同样的其他软件,同样的运行环境等,当然是分别在86和64上的
[/Quote]

当然,我是在同一台电脑上测试的。。。。
lerit 2009-11-07
  • 打赏
  • 举报
回复
要在同等环境下测试才有可比性,同样的内存大小,同样的cpu频率,同样的操作系统,同样的其他软件,同样的运行环境等,当然是分别在86和64上的
temp_acc 2009-11-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sosoyiyi 的回复:]
杀刀用牛鸡,自然看不出鸡刀的效果
[/Quote]

问题是比鸡刀还差啊
sosoyiyi 2009-11-07
  • 打赏
  • 举报
回复
杀刀用牛鸡,自然看不出鸡刀的效果
temp_acc 2009-11-07
  • 打赏
  • 举报
回复
多谢各位, 其实没有什么复杂的代码,只是反复之行下列函数而已,不知道要如何针对64位优化,这都是.net提供的现成的函数。
另外我的系统是64位win7.


public string GetImageSize(string filePath)
{
Image img = Image.FromFile(filePath);
Size size = img.Size;
img.Dispose();
string strSize = string.Concat(size.Width, " x ", size.Height);
return strSize;
}
wartim 2009-11-07
  • 打赏
  • 举报
回复
对了,另外,写成纯64位还需要在64位cpu上才能发挥出64的威力
lerit 2009-11-07
  • 打赏
  • 举报
回复
可惜没64位操作系统和cpu,无法测试
gomoku 2009-11-07
  • 打赏
  • 举报
回复
JIT后64bit的代码大(指针现在是64位了),CPU的预测效率就低;需要的内存也更大,更容易出现内存Cache Miss。
wartim 2009-11-07
  • 打赏
  • 举报
回复
可能是因为你的程序还是一堆32位的代码写的,64的好处根本没占到,就只剩下一个int多用了32位来处理的坏处了吧
不用int32,用int64,float64之类的写成纯64位的代码去64位win7下运行看看

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧