[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