[nem-pl] Ból meczingu po stałych
"Paweł W. Olszta"
Pawel.Olszta at adv.pl
Sun Jan 25 14:13:03 CET 2004
Napisałem sobie program. W kilku językach, ale mniej więcej taki sam.
Polega na bardzo dużej liczbie wywołań instrukcji switch/match/case, w
której jest bardzo dużo wzorców/case'ów (jakoś 400, w tym 3/4 to
czterocyfrowe liczby pierwsze, a reszta bez jakiejś specjalnej struktury).
Oto timingi (kompilator, czas wykonania, czas względem najszybszego,
czas względem Nemerle):
C (gcc -O3): 1.480s / 1.00 / 0.17
Ocaml (ocamlopt): 3.305s / 2.23 / 0.38
C#: 3.538s / 2.39 / 0.41
Nemerle: 8.529s / 5.76 / 1.00
SML.NET: 16.150s / 10.91 / 1.89
Ocaml (ocamlc): 17.590s / 11.88 / 2.06
F#: 23.531s / 15.89 / 2.75
Gwoli uczciwości dodam, że Nemerle (pod Windowsami przynajmniej) tego
testu nie przechodzi na wersji z repozytorium -- generuje StackOverflow
w czasie kompilacji. Czas działania Nemerle podany dla zoptymalizowanego
meczingu po intach, który zaraz chyba skomituję.
Trochę na pewno tracimy względem C# na tym, że generujemy generalnie
gorszy kod (tzn. czasami robimy zupełnie niepotrzebny ruch na stosie,
etc.). Poza tym póki co robię tylko wyszukiwanie binarne (C# używa do
tego czasami tablic skoków) + generuję kod który wygląda na kwadratowy
względem matcha. Obie rzeczy mam nadzieję, że do naprawienia.
--
My opinions may have changed, but not the fact
that I am right. -- Ashley Brilliant
More information about the devel-pl
mailing list