2010-01-17 31 views
8

Tôi đã xem mã JavaScript của người khác, và tôi đã nhận thấy rằng nhiều lập trình viên có xu hướng tạo ra các hàm có thể được kết hợp với các hàm đang gọi chúng. Một ví dụ là this; chức năng 'initWebGL' có thể được kết hợp với chức năng 'bắt đầu' và nó sẽ hoạt động giống nhau. Một ví dụ khác là ở nguồn của this, trong đó chức năng 'đánh dấu', được gọi là mỗi 15 mili giây, thực hiện cuộc gọi đến hai chức năng khác có thể được kết hợp với 'đánh dấu'. Tôi hiểu những phẩm chất của tổ chức này, nhưng tôi tò mò về hiệu quả về hiệu suất. Làm thực hành tốt này, đặc biệt là xem xét JavaScript là một ngôn ngữ thông dịch?Các cuộc gọi hàm trong JavaScript tốn bao nhiêu?

+1

Điều này có phụ thuộc vào phiên dịch bạn sử dụng không? – kennytm

+1

Nếu ngôn ngữ lập trình yêu cầu bạn mất tổ chức đủ hiệu quả, ngôn ngữ đó phải được kích hoạt. – seanmonstar

+4

Các cuộc gọi hàm trong Javascript ít tốn kém hơn so với cơn ác mộng duy trì do mã được tổ chức kém. – friedo

Trả lời

9

Thực tiễn tốt nhất cho bất kỳ ngôn ngữ nào là viết mã có thể đọc và duy trì trước tiên, sau đó tối ưu hóa nếu cần thiết.

Nếu chương trình của bạn chạy đủ nhanh được chia thành các đoạn dễ tiêu hóa, thì hãy để nó theo cách đó. Nếu nó chạy chậm, sau đó như hobodave đã đề cập, hồ sơ để tìm nguyên nhân của sự chậm chạp.

Rất có thể, nó sẽ do nguyên nhân khác ngoài chức năng gọi, nhưng nếu điều đó xảy ra, rồi bắt đầu kết hợp các chức năng với nhau, sau khi bạn đã theo dõi nó.

4

Cách tốt nhất để học cách "gọi hàm đắt tiền", một thước đo cụ thể hoàn toàn mơ hồ và bối cảnh, là để cấu hình nó tự hỏi:

8

http://www.slideshare.net/madrobby/extreme-javascript-performance slide 10..19

10 000 cuộc gọi làm cho một sự khác biệt trong IE và Firefox. 1 cuộc gọi không.

+0

Whoa, điều này rất thú vị! Cảm ơn một tấn! – Skofo

+0

Những gì tôi lấy từ thử nghiệm (với mức hiệu suất động cơ năm 2010) là khoảng một chi phí tối thiểu là 1ms cho mỗi nghìn cuộc gọi. Chỉ để định lượng câu trả lời của bạn. – hexalys

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