Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  scatest.g   Sprache: unbekannt

 
Spracherkennung für: .g vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

TestScalars := function(p,d,z1,z2)
  # z1 and z2 should be primitive roots of GF(p,d) to be compared
  # We want to ask them for their Zero and One.
  local a,a1,a2,ae,b,b1,b2,be,f,i,qmo,ra,reps,ti,ti2;
  qmo := p^d-1;
  
  # First make two random elements:
  ae := Random(1,qmo);
  a1 := z1^ae;
  a2 := z2^ae;
  be := Random(1,qmo);
  b1 := z1^be;
  b2 := z2^be;

  reps := 1000000;
  
  Print("Benchmarking scalars, p=",p," d=",d,"...\n\n");

  Print("Benchmarking addition (",reps," repetitions) ...\n");
  SetGasmanMessageStatus("none");
  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      a := a1+b1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2+b2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  Print("Benchmarking addition without method selection (",
        reps," repetitions) ...\n");
  GASMAN("collect");
  SetGasmanMessageStatus("all");
  f := ApplicableMethod(\+,[a1,b1]);
  ti := Runtime();
  for i in [1..reps] do
      a := f(a1,b1);
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  f := ApplicableMethod(\+,[a2,b2]);
  ti := Runtime();
  for i in [1..reps] do
      b := f(a2,b2);
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  Print("Benchmarking subtraction (",reps," repetitions) ...\n");
  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      a := a1-b1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2-b2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  Print("Benchmarking multiplication (",reps," repetitions) ...\n");
  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      a := a1*b1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2*b2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  reps := 100000;
  Print("Benchmarking division (",reps," repetitions) ...\n");
  ti := Runtime();
  for i in [1..reps] do
      a := a1/b1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2/b2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  reps := 1000000;
  Print("Benchmarking negation (",reps," repetitions) ...\n");
  ti := Runtime();
  for i in [1..reps] do
      a := -a1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := -a2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  reps := 100000;
  Print("Benchmarking inversion (",reps," repetitions) ...\n");
  ti := Runtime();
  for i in [1..reps] do
      a := a1^-1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2^-1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  Print("Benchmarking comparison (=) (",reps," repetitions) ...\n");
  ti := Runtime();
  for i in [1..reps] do
      a := a1=b1;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#1: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");

  GASMAN("collect");
  SetGasmanMessageStatus("all");
  ti := Runtime();
  for i in [1..reps] do
      b := a2=b2;
  od;
  ti2 := Runtime();
  SetGasmanMessageStatus("none");
  Print("#2: ",ti2-ti," ms ==> ",FLOAT_INT((ti2-ti)*1000)/FLOAT_INT(reps),
        " us/op.\n");
end;

[Dauer der Verarbeitung: 0.13 Sekunden, vorverarbeitet 2026-06-15]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=492969
#Domains=607362