Schneller Quadrieren

Die Unit math bringt den ** – Operator mit, der die Potenz einer Zahl berechnen kann.

program QTest;

uses
  Math;
var
  X: Int64;
begin
  X := 3 ** 2;
  WriteLn(X);
end.

Wie zu erwarten erhalten wir die Ausgabe

9

Es gibt jedoch noch eine zweite Möglichkeit das Quadrat einer Zahl zu ermitteln, die Funktion Sqr.

program QTest2;

var
  X: Int64;
begin
  X := Sqr(3);
  WriteLn(X);
end.

Auch hier kommt wie erwartet 9 als Ausgabe zurück.

Beide Varianten unterscheiden sich (neben dem leicht anderen Syntax) in einem wichtigen Punkt: der Geschwindigkeit. Ein Testprogramm welches jede Variante 100 Millionen mal durchführt, zeigt den Unterschied auf.

Für die Variante Sqr wurden 148 ms benötigt, der ** – Operator ließ den Benutzer hingegen 3994 ms warten.

Wer also eine große Anzahl an Berechnungen dieser Art durchführen muss, sollte sich für Sqr entscheiden.