2012-07-03 24 views
12

Tôi có một câu hỏi, tại sao tính toán số python rất nhanh? ví dụ mã bên dưới chạy ngắn hơn một giâyTại sao python math.factorial (x) lại rất nhanh?

import math 
print math.factorial(10000) 

tại sao ???

+0

Tốc độ của chức năng này phụ thuộc rất nhiều vào phiên bản Python. Nó nhanh hơn nhiều trong Python 3, trong khi bạn có vẻ đang sử dụng Python 2.x. –

+2

Tại sao nó không nhanh? – Gabe

+1

Xem [Tại sao math.factorial chậm hơn nhiều trong Python 2.x so với 3.x?] (Http://stackoverflow.com/questions/9815252/why-is-math-factorial-much-slower-in-python- 2-x-than-3-x) để thảo luận về các thuật toán giai thừa khác nhau trong Python 2.x và 3.x. Đóng dưới dạng trùng lặp. –

Trả lời

17

Các math module's functions được thực hiện trong C:

Nó cung cấp quyền truy cập vào các chức năng toán học xác định bởi các tiêu chuẩn C.

Bằng cách sử dụng thuật toán hiệu quả trong C, bạn sẽ nhận được kết quả nhanh.

Nếu bạn hỏi tại sao hoạt động cụ thể này quá nhanh, hãy xem Why is math.factorial much slower in Python 2.x than 3.x?C code itself.

+1

Tốc độ của giai thừa phụ thuộc vào độ phức tạp của thuật toán. Một thực hiện thẳng về phía trước trong C sẽ chậm hơn nhiều so với thuật toán được sử dụng trong Python 3.x –

+0

@SvenMarnach: Làm thế nào tôi đoán rằng OP đã so sánh tốc độ python 2 và 3? :-P –

+1

Kết quả của thuật toán là số có hơn 30000 chữ số, để tính toán số lượng lớn này, bạn nên sử dụng mảng hoặc chuỗi, nhưng tôi nhầm lẫn, tại sao nó trả về kết quả ngắn hơn một giây – Pooya

Các vấn đề liên quan