linux跑程序比windows更快吗,Linux上的相同程序比Windows更快 - 爲什麼?

我有一個非常小的C++程序(〜100行)進行物理模擬。我在同一臺計算機上用Ubuntu Oneiric和Windows XP上的gcc 4.6.1編譯了它。我使用完全相同的命令行選項(相同的生成文件)。

奇怪的是,在Ubuntu上,該程序比Windows上的版本更快(大約7.5 s比13.5 s)更快速地完成。在這一點上,我認爲這是一個編譯器的差異(儘管使用相同的版本)。但更奇怪的是,如果我在wine下運行Windows可執行文件,它的速度仍然快於Windows(我獲得11秒「真實」和7.7秒「用戶」時間 - 並且這包括wine啓動。)

我很困惑。當然,如果相同的代碼在同一個CPU上運行,那麼時間不應該有差異。

這可能是什麼原因?我能做什麼錯?該程序做最小I/O(輸出單行),並且僅使用來自STL的固定長度vector(即,不應涉及系統庫)。在Ubuntu上,我使用默認的gcc和Windows上的Nuwen distribution。我確認在進行基準測試時CPU使用率接近於零(我關閉了大部分程序)。在Linux上,我使用time進行計時。在Windows上,我使用了timethis.exe。

UPDATE

我做了一些更精確的計時,比較適用於Windows XP,葡萄酒gcc和MSVC編譯程序的不同輸入(運行時間必須是正比於輸入)的運行時間和Linux操作系統。所有數字都以秒爲單位,並且是至少3次運行的最小值。

在Windows上,我使用了timethis.exe(掛牆時間),在Linux和Wine上我使用了時間(CPU時間)。 (timethis.exe在Wine上壞了)我確定沒有其他程序正在使用CPU並禁用病毒掃描程序。

gcc的命令行選項爲-march=pentium-m -Wall -O3 -fno-exceptions -fno-rtti(即禁用了例外)。

E1OZi.png

我們從這個數據看什麼:

的差異不是由於工藝的啓動時間,因爲運行時間正比於輸入

的在Wine和Windows上運行的區別僅在於gcc編譯的程序,而不是msvc編譯的程序:它不能由其他程序在Windows上佔用CPU或tim ethis.exe被破壞。

2011-11-09

Szabolcs

+0

這件事是使用多少內存?你有沒有嘗試在探查器下運行它? –

+0

這就像是說2個不同的汽車(一輛卡車和一輛小型跑車)是否使用相同的發動機,他們應該以相同的速度加速? –

+0

難道是在Windows上啓動時間較大?如果您讓程序運行時間更長,那麼這會如何影響Windows和Linux之間的時間差? –

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值