
Da ich ja schon gestern auf die Möglichkeiten der (Ubuntu) Bash auf Windows 10 Creators Update und Delphi eingegangen bin, habe ich mal einen kleinen Performance Test gegenüber einer normalen Ubuntu-Installation gemacht.
Dazu habe ich ein einfaches Quicksort benutzt:
program QuickSort; {$APPTYPE CONSOLE} uses SysUtils, System.Diagnostics, System.Timespan; const maxLen = 100000000; type stip = array [1 .. maxLen] of integer; var i: integer; s: stip; Stopwatch: TStopwatch; Elapsed: TTimeSpan; Seconds: Double; procedure pQuickSort(var a: stip; lo, hi: integer); procedure sort(p, r: integer); var i, j, x, y: integer; begin i := p; j := r; x := a[(p + r) div 2]; repeat while a[i] < x do i := i + 1; while x < a[j] do j := j - 1; if i <= j then begin y := a[i]; a[i] := a[j]; a[j] := y; i := i + 1; j := j - 1; end; until i > j; if p < j then sort(p, j); if i < r then sort(i, r); end; begin sort(lo, hi); end; begin Write('Init....'); for i := 1 to maxLen do begin s[i] := Random(maxLen) end; WriteLn('Done'); Stopwatch := TStopwatch.StartNew; Write('Sorting....'); pQuickSort(s, 1, maxLen); WriteLn('Done'); Elapsed := Stopwatch.Elapsed; Seconds := Elapsed.TotalSeconds; WriteLn; WriteLn(Seconds.toString); readln; end.
Ergebnisse (getitelt aus 3 Durchläufen):
- Ubuntu (direkt bzw als VM mit 4 CPUs/4 GByte RAM)
17,43 / 17,22 / 17,10 Sekunden = 17,25 Sekunden - Bash on Windows (auf dem gleichen Rechner in einer separatem VM mit 4 CPUs/4 GByte RAM)
17,65 / 17,45 / 17,43 Sekunden = 17,51 Sekunden
Also praktisch kein "Leistungsverlust".
Zusätzliche Test mit dem "Sieb des Eratosthenes", ein String-Replacement (wichtig für REST/JSON) und weiterer Arithmetik haben absolut vergleichbare Zahlen geliefert :-)
Good job, Microsoft!
NB: Der PAServer (auf Ubuntu) hatte keinen messbaren Einfluss auf der Ergebnis