Tôi đã tự hỏi điều này một thời gian. Như tiêu đề nói, cái nào nhanh hơn, chức năng thực tế hay đơn giản là nâng lên một nửa sức mạnh?
CẬP NHẬT
Đây không phải là vấn đề tối ưu hóa sớm. Đây chỉ đơn giản là một câu hỏi về cách mã cơ bản thực sự hoạt động. Lý thuyết về cách mã Python hoạt động là gì?
Tôi đã gửi cho Guido van Rossum một email vì tôi thực sự muốn biết sự khác biệt trong các phương pháp này.
Email của tôi:
Có ít nhất 3 cách để thực hiện một căn bậc hai trong Python: math.sqrt, toán tử '**' và pow (x, .5). Tôi chỉ tò mò về sự khác biệt trong việc thực hiện từng điều này. Khi nói đến hiệu quả thì tốt hơn?
Phản ứng của anh ấy:
pow và ** là tương đương; math.sqrt không hoạt động đối với các số phức và liên kết đến hàm C sqrt (). Về việc cái nào nhanh hơn, tôi không biết ...
math.sqrt
là một thói quen tối ưu hơn (như nó là) và thể hiện ý định rõ ràng hơn, nó nên luôn luôn được ưu tiên hơn x**.5
. Không phải là tối ưu hóa sớm để biết những gì bạn viết và chọn phương án nhanh hơn và cung cấp nhiều mã rõ ràng hơn. Nếu vậy, bạn cần tranh luận tốt như nhau tại sao bạn sẽ chọn các lựa chọn thay thế khác.