Hai ngày trước, khi tôi tìm thấy jsperf.com có bộ sưu tập nhiều thử nghiệm hiệu suất javascript, tôi đã duyệt một số kiểm tra.Tại sao Firefox và các trình duyệt khác hoạt động trái ngược khi tính số nào lớn hơn?
Một trong các thử nghiệm là this, so sánh Math.min(a,b)
với a<b?a:b
. Khi tôi chạy thử nghiệm này trên Google Chrome, hóa ra là a<b?a:b
nhanh hơn nhiều so với Math.min(a,b)
(Trên Chrome 14, đầu tiên là 53,661,381 ops/s
và thứ hai là 419,830,711 ops/s
). Các trình duyệt web khác có kết quả tương tự.
Tuy nhiên, trên firefox, kết quả ngược lại. Math.min(a,b)
nhanh hơn nhiều so với a<b?a:b
! Đầu tiên là 374,219,869 ops/s
và thứ hai là 79,490,749 ops/s
trên Firefox 6.
Khi tôi đăng tải này trên Facebook, ai đó nói rằng: "Kể từ khi Firefox là dự án mã nguồn mở, các nhà phát triển tối ưu Math.min
, nhưng Google Chrome đã không , vì Google Chrome chỉ là một sửa đổi của Chromium ", nhưng (bên cạnh tuyên bố ở trên là không hoàn toàn đúng), điều đó không có lý do, vì điều đó không giải thích lý do tại sao Google Chrome a<b?a:b
và Firefox Math.min(a,b)
hoạt động ở tốc độ tương tự và Google Chrome Math.min(a,b)
và Firefox a<b?a:b
hoạt động ở cùng tốc độ, bởi vì nếu Firefox nhanh hơn Google Chrome, thì Googl ecủa Chrome sẽ chậm hơn nhiều so với a<b?a:b
của Firefox.
Tóm tắt:
- Trên các trình duyệt khác,
a<b?a:b
nhanh hơnMath.min(a,b)
. Tuy nhiên, trên Firefox,Math.min(a,b)
nhanh hơna<b?a:b
. - Kể từ tốc độ
Math.min(a,b)
trên Firefox ≒ tốc độa<b?a:b
trên Google Chrome và tốc độa<b?a:b
trên Firefox ≒ tốc độMath.min(a,b)
trên Google Chrome, "Firefox chậm" hoặc "Firefox nhanh" không thể là lý do .
Có bất kỳ lý do nào khiến cho điều này xảy ra như thế nào?
Lý do? Ngoài ra, mỗi trình duyệt được đặt tên có triển khai JavaScript riêng và do đó được tự do tối ưu hóa theo ý muốn. – Jamiec
@Jamiec Nhưng tôi nghĩ 'a JiminP
@Jiminip Lệnh gọi' Math.min' sẽ được biên dịch và phương thức có lẽ sẽ được gạch chân. Có lẽ trong Firefox nó được gạch chân với mã siêu nhanh trong khi 'if' vẫn là' if'. – xanatos