Performance der Ubuntu Bash auf Windows 10 ("Creators Update")

Posted by on in Programming

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 



Comments

Check out more tips and tricks in this development video: