Reklama: Twoja konkurencja już Cię wyprzedziła SPRAWDŹ JAK

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Marcin Kasperski Aaaaaplikacje
projektuję,
proooogramy piszę

Temat: Dlaczego Python

Ech, uruchomiłem sobie na wariata oba benchmarki z tego wątku (uczciwie mówiąc: nie wnikając zbytnio w treść).

Pierwszy przy każdym uruchomieniu zwraca inne wyniki (tj. raz mnie informuje że funkcja jest szybsza niż lambda 1.5 raza, drugi raz na odwrót)

Drugi nie zauważył istotnych różnic, np:

1000 mapowań 20000-elementowej listy
FUNKCJA: 6.96842813492
PRZYPISANA LAMBDA: 6.7131459713
ANONIMOWA LAMBDA: 6.86109614372

Oba benchmarki dziwne, boć "normalnie" pisałbym

[ x**2 for x in xrange(0,1000) ]

który to zapis okazał się zresztą o niemal połowę szybszy niż powyższe (dla powyższego testu 3.81297302246)

Tak czy siak - moim zdaniem akurat lambda nie jest szczególnie mocną stroną Pythona. Ze względu na ograniczenia syntaksu. Do czysto funkcyjnych zabaw proponuję Haskella albo inny język z rodziny ML-i.

A co do matematyki, obliczeń, zabaw a'a matlab w Pythonie - Sage jest po prostu super
22.01.2009, 14:30

Tomasz Elendt Software Engineer at
Nokia gate5 GmbH

Temat: Dlaczego Python

Marcin Kasperski:
Ech, uruchomiłem sobie na wariata oba benchmarki z tego wątku (uczciwie mówiąc: nie wnikając zbytnio w treść).

Po Twoim wpisie wyraźnie widać, że nie wnikałeś w treść :)
Pierwszy przy każdym uruchomieniu zwraca inne wyniki (tj. raz mnie informuje że funkcja jest szybsza niż lambda 1.5 raza, drugi raz na odwrót)

Drugi nie zauważył istotnych różnic, np:

1000 mapowań 20000-elementowej listy
FUNKCJA: 6.96842813492
PRZYPISANA LAMBDA: 6.7131459713
ANONIMOWA LAMBDA: 6.86109614372

Pomogę zinterpretować – nie ma wyraźnej różnicy, pomiędzy czasem wywołania funkcji i lambdy. Inaczej mówiąc wywołanie funkcji zajmuje porównywalny czas do wywołania lambdy. W tym stwierdzeniu kryje się też odpowiedź na pytanie – "dlaczego funkcja z przykładu Łukasza zwraca za każdym razem różne wyniki". Ano dlatego, że z uwagi na zbliżone czasy wywołania, raz szybciej wykona się wywołanie funkcji, innym razem lambdy. Tak z grubsza działa test Łukasza (robi 10000 porównań czasu trwaniapojedynczych wywołań funkcji i lamdy i odpowiednio inkrementuje "licznik zwycięstw"). Dlatego też wcześniej nazwałem test Łukasza generatorem liczb pseudolosowych :)
Oba benchmarki dziwne, boć "normalnie" pisałbym

[ x**2 for x in xrange(0,1000) ]

Bardzo dobrze. To jest chyba zresztą najbardziej "naturalny" zapis dla Pythona.
który to zapis okazał się zresztą o niemal połowę szybszy niż powyższe (dla powyższego testu 3.81297302246)

Przyczyna takiego stanu rzeczy została już w tym wątku wyjaśniona.
A co do matematyki, obliczeń, zabaw a'a matlab w Pythonie - Sage jest po prostu super

Dzięki za linka.Tomasz Elendt edytował(a) ten post dnia 22.01.09 o godzinie 22:16
22.01.2009, 19:06

konto usunięte

Temat: Dlaczego Python

Tomek, ty już zdrowy?:)
22.01.2009, 23:32

Tomasz Elendt Software Engineer at
Nokia gate5 GmbH

Temat: Dlaczego Python

Niestety nie :(
23.01.2009, 10:10



Wyślij zaproszenie do