[nem-pl] Uwagi różne
Michal Moskal
malekith at pld-linux.org
Thu Feb 19 10:19:13 CET 2004
On Thu, Feb 19, 2004 at 02:47:22AM +0100, Marcin 'Qrczak' Kowalczyk wrote:
> W liście z czw, 19-02-2004, godz. 01:30, Michal Moskal pisze:
>
> > Tak czy inaczej ten program głównie co robi to produkuje stringi,
> > nie wiem czy takie było zamierzenie.
>
> Wersja w Pythonie po zamianie wypisywania na sumowanie ostatnich cyfr
> (tylko ostatnich cyfr, bo nie każdy język ma wygodne liczby nie
> mieszczące się w słowie maszynowym) jest tylko 1.2 razy szybsza niż
> wypisująca liczby do /dev/null. W C robi się 2 razy szybsza.
W Nemerle też robi się dwa razy szybsza.
> Myślę, że test uwzględniający wejście/wyjście i konwersję liczby na
> tekst jest bardziej reprezentatywny dla życiowych programów niż czyste
> ciasne pętle. W każdym razie te konwersje to najwyżej połowa czasu.
> Ale dobra, mogę mierzyć te czysto obliczenowe.
W sumie masz rację. Tyle, że w mono System.Console nie jest najlepiej
zoptymalizowane, konkretnie wydaje mi się, że nie buforuje. Dlatego do
produkcji takich długich stringów użyj lepiej wersji ze stringbuilderem.
> Czekam na poprawioną wersję Nemerle, której stos się nie kończy.
> Najwygodniej, gdyby była gotowa do zainstalowania z CVS PLD :-)
Dziś wieczorem :)
> Czasy wersji sumującej ostatnie cyfry (najlepsze z 3 uruchomień):
>
> C 0.201
> OCamlopt 0.406
> OCamlopt -unsafe 0.376
> Kogut (mój), wersja z niskopoziomowo rozpisanymi pętlami 1.024
> Kogut, wersja ładna 1.671
> Python 3.089
> Perl 6.110
>
> Jakby ktoś chciał się bawić, to
> <http://qrnik.knm.org.pl/~qrczak/tmp/primes.tar.gz>
Kurde, albo ja nie umiem kompilować C, albo ty masz ponad 3 GHz
procesora ;) Tak czy inaczej u mnie:
C 0.37 0.49
Nemerle 0.60 1.28
ocamlopt (u) 0.65 0.87
ocamlopt 0.70 0.87
Co jest naprawdę ciekawe, nie spodziewałem się tak dobrych wyników
Nemerle w teście z sumowaniem (pierwszy) (szczególnie jak się popatrzy
na IL generowany przez nemerle dla fora...).
> W tego typu programach statycznie typowane języki nie sprawdzające
> przepełnień arytmetyki intów mają oczywiście szczególnie łatwo.
Nemerle sprawdza (w planach jest odpowiednia flaga i może konstrukcja
języka unchecked { ... }).
--
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?
More information about the devel-pl
mailing list