LinuxからWindowsにC++コードを移植しています。このプロセスの間に、私は次の行が(まったく同じハードウェア上)は、Windowsの下で〜10倍遅くを取ることが判明:Linux上でそれは〜1msのをとりながら、WindowsではWindowsとLinuxのメモリ割り当て/ std :: listコンストラクタのパフォーマンス
list<char*>* item = new list<char*>[160000];
それは、〜10msのを取ります。これは平均時間であることに注意してください。この行を100回実行すると、Windowsでは約1秒かかります。
これは、両方のバージョンがリリースでコンパイルされ、速度がQueryPerformanceCounter(Windows)およびgettimeofday(Linux)によって測定されます。
Linuxコンパイラはgccです。 WindowsコンパイラはVS2010です。
なぜこれが起こる可能性がありますか?
とにかくループが起ころうとしていますそれは10msが他のものが進行することによって容易に妨げられるほどです。少なくとも数秒で測定してください。しかし、それでも私はウィンドウ上のメモリを割り当てるための方法が遅いと推測します。ちょっと遊んで、あなたのプログラムで使うパターンのようにしてください。 – PlasmaHH
@EdHeal:タイムマシンを修正しました。あなたは今1998年に戻って幸せにそこに住むことができます。 –
@ssgわからない私の側では、Qtで5msの解像度のタイマーを持っていて、Windowsでそれをする方法がないように最善を尽くしました。 – UmNyobe