linux系统比win系统快,c – Linux上的程序速度比Windows快 – 为什么?

对此问题的解决方案可以在问题

Executable runs faster on Wine than Windows — why?中找到.Glibc的floor()可能是根据系统库实现的.

我有一个非常小的C程序(~100行)用于物理模拟.我在同一台计算机上的Ubuntu Oneiric和Windows XP上用gcc 4.6.1编译了它.我使用了完全相同的命令行选项(相同的makefile).

奇怪的是,在Ubuntu上,该程序的完成速度比在Windows上快得多(约7.5秒对13.5秒).在这一点上,我认为这是编译器的差异(尽管使用相同的版本).

但更奇怪的是,如果我在葡萄酒下运行Windows可执行文件,它仍然比在Windows上更快(我得到11秒“真实”和7.7秒“用户”时间 – 这包括葡萄酒创业.)

我糊涂了.当然,如果在同一个CPU上运行相同的代码,则时间应该没有差别.

这可能是什么原因?我能做错什么?

程序执行最小I / O(输出单行),并且仅使用来自STL的固定长度向量(即,不应涉及系统库).在Ubuntu上我使用了默认的gcc,在Windows上使用了Nuwen distribution.我在进行基准测试时验证了CPU使用率接近于零(我关闭了大多数程序).在Linux上我用时间来计时.在Windows上我使用timethis.exe.

UPDATE

我做了一些更精确的计时,比较了Windows XP,Wine和Linux上gcc和msvc编译程序的不同输入(运行时必须与输入成比例)的运行时间.所有数字均以秒为单位,是至少3次运行的最小值.

在Windows上,我使用timethis.exe(挂机时间),在Linux和Wine上我使用了时间(CPU时间). (timethis.exe在Wine上断了)我确保没有其他程序使用CPU并禁用了病毒扫描程序.

gcc的命令行选项是-march = pentium -m -Wall -O3 -fno-exceptions -fno-rtti(即异常被禁用).

我们从这些数据中看到的是:

>差异不是由于过程启动时间,因为运行时间与输入成正比

>运行Wine和Windows之间的区别只存在于gcc编译的程序,而不是msvc编译的程序:它不能被其他程序在Windows上占用CPU或者timethis.exe被破坏.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值