2010-09-23 19 views

Trả lời

5

Cách 'tốt hơn' sẽ là:

var nameparts= ['Bob']; 
nameparts.push(' is a good name'); 
... 
nameparts.join(''); 

Tuy nhiên, hầu hết các trường Javascript hiện đại làm bây giờ phát hiện nối ngây thơ và có thể trong nhiều trường hợp tối ưu hóa nó đi, bởi vì rất nhiều người có (than ôi) bằng văn bản mã theo cách này. Vì vậy, trong thực tế, phương pháp 'tốt' sẽ không nhanh hơn nhiều so với trước đây.

+0

Đúng - Tôi nghĩ thật xấu hổ khi làm xáo trộn mã đáng yêu bằng các kỹ thuật tối ưu hóa tập trung hẹp. Bây giờ, điều đó nói rằng, IE6 đã thực sự rất khủng khiếp chậm trong một số tình huống lừa này đặc biệt là một trong đó là thực sự tốt để biết. Đối với hai hoặc ba nối nó là ngớ ngẩn, nhưng đối với số lượng thấp như hàng trăm thấp nó có thể tạo ra một sự khác biệt đáng ngạc nhiên. – Pointy

+0

Bạn có danh sách các triển khai tối ưu hóa việc này không? – bobber205

+0

Tôi đang sửa đổi một số mã JS cũ hơn và chức năng chiếm 40% thời gian thực hiện theo Firebug chủ yếu chỉ là nối chuỗi. – bobber205

1

Tăng hiệu suất lớn có thể đạt được bằng cách sử dụng các chuỗi trung gian! Có thể tạo lớp StringBuffer giống như trong JavaScript để tăng hiệu suất hơn nữa.

Xem toàn bộ bài viết và đồ thị here.

0

một lần tôi đọc một bài báo về chủ đề này mà dâng hiến không một số mã để xây dựng chuỗi đệm với mảng:

http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation

Tôi đã thử nghiệm nó bản thân mình và đó là cách nhanh hơn trong IE ... và cách chậm trong Firefox!

Tóm lại: có rất nhiều công cụ JavaScript ở đó và chúng tôi không thể thực sự dựa vào loại chi tiết triển khai này. Nếu nó là một vấn đề, bạn sẽ nhận thấy. Trước đó, đừng quan tâm quá nhiều.

1

Hiệu quả của chuỗi nối sẽ phụ thuộc vào trình duyệt bạn đang sử dụng. Bạn có thể google cho số liệu thống kê, đó cũng là một googleTalk có sẵn trên youtube. Từ những gì tôi có thể nhớ, hầu hết các trình duyệt xử lý các chuỗi nối có hiệu quả khi số lượng các phần tử dưới vài nghìn. Sau đó IE làm chậm tốc độ theo cấp số nhân, khi firefox, chrome và safari đang hoạt động tốt hơn nhiều. Điều này có thể thay đổi kể từ khi IE9 không xa lắm.

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