J’ai un morceau de code qui s’exécute 2 fois plus vite sous Windows que sous Linux. Voici les temps que j’ai mesurés:
g++ -Ofast -march=native -m64 29.1123 g++ -Ofast -march=native 29.0497 clang++ -Ofast -march=native 28.9192 visual studio 2013 Debug 32b 13.8802 visual studio 2013 Release 32b 12.5569
Cela semble vraiment être une énorme différence.
Voici le code:
#include #include
Tout cela a été mesuré sur la même machine avec Windows 8 vs Linux 3.19.5 (gcc 4.9.2, clang 3.5.0). Linux et Windows sont tous deux 64 bits.
Quelle pourrait en être la raison? Quelques problèmes de planificateur?
EDIT: Il a été causé par la construction de binarys 32b sur Windows par opposition aux binarys 64b sur Linux, voici les nombres 64b pour les fenêtres:
Visual studio 2013 Debug 64b 29.1985 Visual studio 2013 Release 64b 29.7469
Vous ne dites pas si les systèmes d’exploitation Windows / Linux sont 32 ou 64 bits.
Sur une machine Linux 64 bits, si vous changez la taille_t en int, vous constaterez que les temps d’exécution diminuent sous Linux à une valeur similaire à celle que vous avez pour Windows.
size_t est un int32 sur win32, un int64 sur win64.
EDIT: juste vu votre déassembly de Windows.
Votre système d’exploitation Windows est la variété 32 bits (ou au moins vous avez compilé pour 32 bits).