[nem-pl] rekursje ogonowe
"Paweł W. Olszta"
Pawel.Olszta at adv.pl
Mon Jan 19 01:08:35 CET 2004
Michal Moskal wrote:
> W .NET włączenie self tail calls, bez general tail calls powoduje
> przyrost prędkości o jakieś 3% (to może być błąd pomiaru). Natomiast
> włączenie tylko general tail calls, bez self tail calls powoduje
> *spadek* prędkości o 15%. To ostatnie jest naprawdę dziwne...
:-]
Pewnie niezoptymalizowane ścieżki w generatorze kodu natywnego. Trzeba
popatrzeć w disasembler (ale ten prawdziwy, nie ildasm). Pewnie jesteśmy
pierwsi na świecie, co używają tail call'i (sprawdzę sml.net i f# jutro,
ale jeśli chodzi o Mono to na pewno nikt ich nie generował, skoro nie
działają?).
Chyba najwyższa pora skontaktować się z CLR Performance Team i przekazać
im, że już mają dobre dane testowe ;)
Ale ogólnie to padaka (spadochron, dzięki Michał :-p). Miałem nadzieję,
że będzie dużo lepiej. No i pytanie czemu wcześniej self tail calls
dawał nam odczuwalne przyspieszenie?
Kod generowany przez CGil ma zdecydowanie mniej zmiennych lokalnych, niż
ten generowany przez CGflat, poza tym niczym raczej się nie różni. Może
to na zmiennych lokalnych były robione oszczędności (przy wejściu do
funkcji zawsze są ustawiane na null/zero/false, co trochę też kosztuje)?
Dobranoc
Paweł
--
My opinions may have changed, but not the fact
that I am right. -- Ashley Brilliant
More information about the devel-pl
mailing list