geplaatst door: MacDuck
Ik zit met het volgende wereldschokkende raadsel. Ik heb een programma van het web geplukt waarmee je het getal PI (3.14...) in gruwelijk veel decimalen kunt uitrekenen. Dat heeft verder geen enkel praktisch nut behalve dat je computers met elkaar kunt vergelijken: een standaardtest is pi in 1 miljoen decimalen. Een G5 op 1.8 Ghz, met 1 GB geheugen, deed daar ca 17 seconden over, een iMac intel 2.16 Core Duo met 1 GB: 11 seconden.

Ik vond dat niet slecht, maar ik had op iets meer gehoopt. Draai ik op dezelfde machine, onder Windows XP / bootcamp, de windows versie van het programma: 5 seconden! javascript:emoticon(':woot:')
Het kan dus wel degelijk veel sneller.

Nou was dat Windows programma een .exe, maar voor niet-Windows machines is alleen de C-broncode beschikbaar. Dit heb ik, niet gehinderd door enige kennis, via het "make"-commando in een executable omgezet. Zou ik daar iets fout gedaan hebben?

Het programma kun je overigens hier downloaden.

C-programma op intel core duo: Mac versus Windows
18 februari 2007 - 02:27    reactie #1
geplaatst door: MacFrankie
Er zijn zooooveel settings die je kunt doen in een C compiler. Standaard staan alle errors aan en warnings staan hoog. Controles, zoals array boundary checks, uitzetten bespaart seconden. Genoeg van die controles uitzetten en dan nogmaals benchmarken!
Op mijn werk heb ik al Windows, thuis wil ik geen systeembeheerder meer zijn!
C-programma op intel core duo: Mac versus Windows
19 februari 2007 - 19:05    reactie #2
geplaatst door: MacDuck
Eureka! In 4 seconden het getal Pi uitgerekend, in 1 miljoen decimalen! OSX verslaat wederom Windows. javascript:emoticon(':devil:')

Het probleem zat 'm in het feit dat ik het programma voor de PPC had gecompileerd, niet voor de Intel Core Duo. En dan moet 'ie 'm onder Rosetta draaien, wat de boel zwaar vertraagd. Kan alleen iemand overkomen die niet weet wat 'ie doet, natuurlijk.

Ik heb hiervoor wel eerst Xcode 2.4.1 moeten downloaden, met een nieuwere versie van GCC, want de versie die ik had ondersteunde geen universal binaries. En daarvoor moest ik me eerst aanmelden als Apple developer, wat ik nu dus ben, nog steeds zonder ergens verstand van te hebben.

Bedankt MacFrankie voor de reactie.

C-programma op intel core duo: Mac versus Windows
19 februari 2007 - 20:27    reactie #3
geplaatst door: Giel
Foute conclusie!
òf jouw compiler instellingen op de mac verslaan de compiler instellingen van degene die de windows executable gemaakt heeft!
òf jouw compiler is betere dan de windows compiler!

Maar mac osx is beter dan windows is wel een leukere conclusie ;)

Een onderschrift kan best leuk zijn. Echt waar!
C-programma op intel core duo: Mac versus Windows
19 februari 2007 - 21:26    reactie #4
geplaatst door: bert

Citaat
MacDuck om 19:05, 19-02-2007
Ik heb hiervoor wel eerst Xcode 2.4.1 moeten downloaden, met een nieuwere versie van GCC, want de versie die ik had ondersteunde geen universal binaries. En daarvoor moest ik me eerst aanmelden als Apple developer, wat ik nu dus ben, nog steeds zonder ergens verstand van te hebben.

Nou, als jij een programma kan compileren dan zou ik dat niet "geen verstand van" willen noemen.  :shakehands:

Bert

C-programma op intel core duo: Mac versus Windows
20 februari 2007 - 08:16    reactie #5
geplaatst door: mvdg
Ik vind dit nogal een onzinnige test. Als je het programma zodanig compileert en uitvoert dat het op een zo laag mogelijk niveau draait, zal het nauwelijks uitmaken op welk systeem je het draait. De C code (eenmaal omgezet naar een executable) werkt dan als het ware zo direct mogelijk op je processor. Misschien is het een klein beetje een test van wat het systeem aan tijd ervanaf snoept. Maar dat moet je ook weer zien in het licht van wat je daarvoor terug krijgt: misschien wordt er geheugen gecached ofzo. Daar heb je bij dit programmaatje misschien weinig aan, maar bij "echte" programma's juist veel.

Kortom het is een soort theoretisch experiment waarvan je de variabelen totaal niet onder controle hebt. Leuk om te doen maar niet nuttig.

Uiteindelijk zal dezelfde processor dezelfde instructies met dezelfde snelheid uitvoeren. Variaties in tijd liggen waarschijnlijk meer aan jouw proces eromheen dan aan echte snelheidsverschillen..

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
C-programma op intel core duo: Mac versus Windows
20 februari 2007 - 09:29    reactie #6
geplaatst door: TGV

Citaat
MacFrankie om 2:27, 18-02-2007
Er zijn zooooveel settings die je kunt doen in een C compiler. Standaard staan alle errors aan en warnings staan hoog. Controles, zoals array boundary checks, uitzetten bespaart seconden. Genoeg van die controles uitzetten en dan nogmaals benchmarken!

Even voor de goede orde: ik ken geen C-compiler die arraygrenzen kan controleren en foutmeldingen en waarschuwingen worden slechts gegeven tijdens het compileren en beïnvloeden de rekentijd van het programma zelf dus niet. Wel zijn er een hoop opties voor codegeneratie, zoals het "uitrollen" van lussen, elimineren van vaker gebruikte expressies, etc., die de rekentijd sterk kunnen beïnvloeden.