2012-07-03 15 views
12

Mam pytanie, dlaczego obliczenia numeryczne Pythona są bardzo szybkie? na przykład poniższy kod działa krócej niż jedną sekundęDlaczego python math.factorial (x) jest bardzo szybki?

import math 
print math.factorial(10000) 

dlaczego ???

+0

Szybkość tej funkcji zależy w dużej mierze od wersji Pythona. W Pythonie 3 jest znacznie szybciej, a wydaje się, że używasz Pythona w wersji 2.x. –

+2

Dlaczego nie byłoby szybko? – Gabe

+1

Zobacz [Dlaczego współczynnik math.factorial jest znacznie wolniejszy w Pythonie 2.x niż 3.x?] (Http://stackoverflow.com/questions/9815252/why-is-math-factorial-much-much-slugi-w-pythonie- 2-x-than-3-x) do dyskusji na temat różnych algorytmów czynnikowych w Pythonie 2.x i 3.x. Zamykanie jako duplikat. –

Odpowiedz

17

The math module's functions są zaimplementowane w C:

Zapewnia dostęp do funkcji matematycznych zdefiniowanych przez standard C.

Dzięki zastosowaniu wydajnego algorytmu w C uzyskuje się szybkie wyniki.

Jeśli pytasz, dlaczego ta konkretna operacja jest tak szybka, zobacz Why is math.factorial much slower in Python 2.x than 3.x? i C code itself.

+1

Szybkość silni zależy od złożoności algorytmu. Prosta implementacja w C będzie znacznie wolniejsza niż algorytm używany w Pythonie 3.x –

+0

@SvenMarnach: Jak miałem się domyślić, że OP porównywał prędkość 2 i 3 Pythona? :-P –

+1

Wynikiem algorytmu jest liczba z ponad 30000 cyframi, przy tym ogromnym wyliczaniu liczb należy użyć tablicy lub łańcucha, ale jestem zdezorientowany, dlaczego zwraca wynik krótszy niż jedna sekunda – Pooya

Powiązane problemy