cuốn sách gpt4 ai đã làm

Tại sao việc gọi một hàm lồng trong một đối tượng hàm lại nhanh hơn...?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 23:05:18 28 4
mua khóa gpt4 Nike

Tôi muốn biết cách nhanh nhất về mặt tính toán để gọi một hàm được lồng trong một đối tượng là gì, vì vậy tôi đã thực hiện một tiêu chuẩn nhanh jsPerf.com trong đó tôi đã xem xét ba khả năng - gọi một hàm từ một mảng, Gọi các đối tượng hàm và các đối tượng hàm từ " cốt lõi":

var array = [1, 1, function(number) { return number }];

var funcObj = function() {
cái này.one = 1;
cái này.hai = 2;
this.ba = hàm(số) { trả về số };
}
var someFunc = new funcObj();

var obj = {
một: 1,
hai: 1,
ba: hàm(số) { trả về số }
}

Đây là những gì xảy ra:

Bây giờ câu hỏi là: Tại sao lại có sự khác biệt lớn như vậy?

EDIT: Liên kết tới điểm chuẩn:>> liên kết <<

câu trả lời hay nhất

Hiệu suất thay đổi tùy theo cách triển khai nhưng dưới đây là một số thông tin chi tiết có thể giải thích sự khác biệt:

Đầu tiên, điều bạn đang đo ở đây không phải là lệnh gọi hàm. bạn đang đo mảng[2],someFunc.baobj.ba tốc độ tìm kiếm.

Bạn sẽ thấy rằng các mảng và các đối tượng có tốc độ gần như nhau, nhưng new Việc xây dựng nhanh hơn đáng kể.

Chỉ mục mảng và thuộc tính đối tượng có thể được giải quyết bằng tìm kiếm nhị phân. Tôi đoán việc lập chỉ mục mảng chậm hơn một chút trên công cụ bạn đang thử nghiệm.

new Một lý do khiến quá trình xây dựng diễn ra nhanh như vậy là vì nó được biên dịch thành một lớp, điều này mở ra cánh cửa cho toàn bộ phạm vi tối ưu hóa. Tôi không chắc liệu bạn có đạt được hiệu suất nhờ việc tra cứu nhanh hơn hay nó được tối ưu hóa ở nơi khác.


Một điều cần lưu ý nữa là bạn không nên để mình bị giới hạn bởi những tiêu chuẩn hiệu suất nhỏ này. Trong điều kiện sử dụng bình thường, bất kỳ giải pháp nào trong số này đều ổn, đặc biệt là vì chúng ảnh hưởng đến cách bạn viết mã. Nếu bạn gặp vấn đề thực sự về hiệu suất, bạn sẽ dễ dàng đưa ra quyết định đúng đắn về nơi cần tối ưu hóa.

Tại sao việc gọi một hàm lồng trong một đối tượng hàm lại nhanh hơn...? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/24714557/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress