Hallo,
Ik worstel momenteel met een bijzonder vreemd probleem.
Ik heb een CPU-intensief programma geschreven. Als ik dit compileer onder Windows, dan is de uitvoeringstijd van dit programma +- 9s voor een gegeven inputbestand.
Als ik exact dezelfde code compileer onder linux, dan is de uitvoeringstijd daar 27s (uiteraard met dezelfde input). En nochtans is de Linux machine een stuk krachtiger dan de Windows machine...
Ik heb al geprobeerd om talrijke optimalisatie flags te gebruiken met de gcc compiler op linux, maar ik krijg de uitvoeringstijd onmogelijk onder de 26s . Dit verschil is toch wel bijzonder groot! Hoe valt dit te verklaren en hoe kan ik dit oplossen?
Ik heb trouwens iemand gevonden met exact hetzelfde probleem, maar geen oplossing:
http://gcc.gnu.org/ml/gcc-help/2005-04/msg00204.html
Ik heb deze persoon in ieder geval gemaild.
De exacte specs van de machines en compilers:
- Windows:
Windows XP Pro
Intel Pentium D 2.8Ghz
2 Gig RAM
Visual Studio 2005 (v8.0)
- Linux
Debian 4.0
AMD Athlon 64 3200+
512Mb RAM
GCC 4.1.2
Ik heb al de volgende gcc flags geprobeerd:
-O3 -fomit-frame-pointer -ffast-math -sse2 -march=athlon64 -mmmx -mfpmath=sse,387 -funroll-loops
Geen enkele flag produceert echter een merkbare verbetering.
De applicatie linkt enkel met de standaard c/c++ libraries en gebruikt geen exotische calls of zoiets.
(Standaard number crunching).
Gezien de machinespecs is de voor de hand liggende conclusie dat de Linux machine over te weinig geheugen beschikt. De applicatie heeft echter een bijzonder lage memory footprint (16Mb max, en zoveel geheugen is vrij op de linux machine).
Ik sta voor een raadsel.
Ik hoop dat iemand mij kan helpen.
Alvast bedankt in ieder geval!
Ik worstel momenteel met een bijzonder vreemd probleem.
Ik heb een CPU-intensief programma geschreven. Als ik dit compileer onder Windows, dan is de uitvoeringstijd van dit programma +- 9s voor een gegeven inputbestand.
Als ik exact dezelfde code compileer onder linux, dan is de uitvoeringstijd daar 27s (uiteraard met dezelfde input). En nochtans is de Linux machine een stuk krachtiger dan de Windows machine...
Ik heb al geprobeerd om talrijke optimalisatie flags te gebruiken met de gcc compiler op linux, maar ik krijg de uitvoeringstijd onmogelijk onder de 26s . Dit verschil is toch wel bijzonder groot! Hoe valt dit te verklaren en hoe kan ik dit oplossen?
Ik heb trouwens iemand gevonden met exact hetzelfde probleem, maar geen oplossing:
http://gcc.gnu.org/ml/gcc-help/2005-04/msg00204.html
Ik heb deze persoon in ieder geval gemaild.
De exacte specs van de machines en compilers:
- Windows:
Windows XP Pro
Intel Pentium D 2.8Ghz
2 Gig RAM
Visual Studio 2005 (v8.0)
- Linux
Debian 4.0
AMD Athlon 64 3200+
512Mb RAM
GCC 4.1.2
Ik heb al de volgende gcc flags geprobeerd:
-O3 -fomit-frame-pointer -ffast-math -sse2 -march=athlon64 -mmmx -mfpmath=sse,387 -funroll-loops
Geen enkele flag produceert echter een merkbare verbetering.
De applicatie linkt enkel met de standaard c/c++ libraries en gebruikt geen exotische calls of zoiets.
(Standaard number crunching).
Gezien de machinespecs is de voor de hand liggende conclusie dat de Linux machine over te weinig geheugen beschikt. De applicatie heeft echter een bijzonder lage memory footprint (16Mb max, en zoveel geheugen is vrij op de linux machine).
Ik sta voor een raadsel.
Ik hoop dat iemand mij kan helpen.
Alvast bedankt in ieder geval!