← Back to team overview

sslug-teknik team mailing list archive

Re: Hastighed: Linux vs. Windows !!

 

On Wed, 17 Feb 1999, Falko Jens Wagner wrote:

> I forbindelse med en undersøgelse af cache hukommelsen, lavede jeg et lille
> program, der gangede to matricer sammen. Hvis matricen er nxn, giver det n^3
> regneoperationer.
> 
> For at kunne måle hastigheden satte jeg en timer ind i mit program, og talte
> antallet af operationer. Dette giver mig så en pseudo-performance i Mflops.

Meget pseudo, ja.
> 
> Det jeg oplevede var, at under Windows 98 kørte mit program ca. dobbelt så
> hurtigt som under Linux, uden at jeg gav compilerne nogle specielle options.
> Under Windows 98 (Microsoft Visual C++) kunne jeg give compileren den
> option, at den skulle optimere koden mht. Pentium. Dette gav yderligere en
> faktor 2 i performance.
> 
> Under Linux anvender jeg g++.
> 
> Hvordan kan det være ?????????

MS's VC++ oversætter genererer faktisk ganske god kode. Men,
sammenligningen af et (et enkelt) program oversat med to forskellige 
oversættere, afviklet under to forskellige OS'er, indeholder langt flere
parametre end dit ????????? lægger op til at du har tænkt over.

Der er forskelle i rå performance under Linux og NT, men for f.eks. CPU
tunge programmer vil det give sig udslag i ting som den tid et processkift
tager og lignende "småting". Alt andet lige, med den tilgang du har,
kommer du til at sammenligne oversættere, ikke systemer. (Her forudsættes
at du ikke rammer ting som virtuel hukommelse, mm).

HVIS du vil have brugbare resultater, bliver du nødt til at f.eks. anvende
den samme oversætter. gcc fås til Windows. Men, den genererer slet ikke
kode af samme kvalitet (hastighed) som vc++. Jeg proevede engang Borlands
c++ oversætter imod vc++ på det samme cpu tunge program, og vc++ lavede
programmer der afviklede over dobbelt så hurtigt som det samme program på
samme inddata oversat med Borlands oversætter. Borlands var til gengaeld
dobbelt så hurtig som gcc's kode. 

Så, hvis du vil sammenligne med hvad du virkelig kan få ud af Linux bliver
du nok nødt til at anskaffe dig en god oversætter til Linux - gcc er i den
forbindelse desværre ikke særlig fantastisk, som du selv var inde på
indeholder den ingen pentium specifikke optimeringer, hvilket i praksis
koster dyrt.

Jeg ved at der findes kommercielle oversættere til Linux som kan anvendes.
Ellers kan man faktisk (men, det er ikke trivielt og måske nok lidt
teoretisk) arrangere sin kode således at man kan oversætte objekt filer
under MS VC++ og linke dem imod andre objekt filer under Linux for at få
et linux program der kører (mindst) lige så hurtigt som under Windows. 

Den praktiske anvendelse af det sidste er nok noget begrænset - du er nok
bedre stillet ved at anskaffe dig en demo af en god kommerciel oversætter
til Linux.

Mads

-- 
Mads Bondo Dydensborg.                               madsdyd@xxxxxxxxxxxx
---
Unix is user-friendly; it's just a little particular about which users it is
friendly to.



Follow ups

References