Vì vậy, tôi đang lập trình một mô phỏng vật lý Javascript 2d. Hiệu suất là tốt, nhưng tôi sẽ thực hiện tối ưu hóa để làm cho nó tốt hơn. Vì vậy, bởi vì chương trình làm việc với rất nhiều hình học vật lý, tôi thực hiện một số tính toán Định lý Pythagore trong chương trình. Trong tất cả, khoảng năm phép tính; cùng nhau, chúng chạy khoảng một triệu lần mỗi giây. Vì vậy, tôi đoán nó sẽ tăng hiệu suất nếu tôi đặt mã định lý Pythagore đơn giản đó vào một hàm mới và gọi nó là; sau khi tất cả, theo cách đó trình duyệt có ít biên dịch để làm. Vì vậy, tôi đã chạy mã trong Firefox và nhận được .... tăng 4000000% trong thời gian thực hiện phép tính đó.JS: Mất bao lâu để gọi một hàm?
Làm cách nào? Đó là cùng một mã: Math.sqrt (x * x + y * y), do đó, làm thế nào để thêm nó như là một chức năng làm chậm nó xuống? Tôi cho rằng lý do là một hàm cần có thời gian chỉ để được gọi, mà không thực thi mã, và thêm rằng một triệu trong số những sự chậm trễ này trên một giây làm chậm nó xuống?
Điều đó dường như khá đáng báo động đối với tôi. Điều này cũng áp dụng cho các hàm js được xác định trước? Có vẻ như không, và nếu như vậy, làm thế nào để họ tránh được nó?
Các mã được sử dụng để đi như thế này:
function x()
{
dx=nx-mx;
dy=ny-my;
d=Math.sqrt(dx*dx+dy*dy);
doStuff(...
}
Những gì tôi cố gắng là thế này:
function x()
{
dx=nx-mx;
dy=ny-my;
d=hypo(dx,dy);
doStuff(...
}
function hypo(x,y)
{
return Math.sqrt(x*x+y*y);
}
Cảm ơn!
Chức năng của bạn được xác định nằm ngoài phạm vi đang chạy một triệu lần một giây? – alex
Và nó không đúng khi trình duyệt có "ít biên dịch để làm" bởi vì bạn đặt nó vào một hàm ... nó phải giống nhau, thực sự, đặc biệt là khi biên dịch là một điều khởi động. Nhưng @alex có lẽ đã có lý do cho sự suy giảm 400% của bạn :) – Ryan
@alex Có, nó được định nghĩa trong cửa sổ chính. – mindoftea