Bằng cách chuyển một chức năng sắp xếp javascript từ400x Sorting Speedup bởi Switching a.localeCompare (b) (a <b?-1:(a> b 1: 0))
myArray.sort(function (a, b) {
return a.name.localeCompare(b.name);
});
để
myArray.sort(function (a, b) {
return (a.name < b.name ? -1 : (a.name > b.name ? 1 : 0));
});
tôi đã có thể để giảm thời gian sắp xếp mảng phần tử ~ 1700 trong Chrome từ 1993 mili giây đến 5 mili giây. Tốc độ tăng lên gần 400 lần. Thật không may, điều này là do chi phí phân loại chính xác các chuỗi không phải tiếng Anh.
Rõ ràng là tôi không thể chặn giao diện người dùng của mình trong 2 giây khi tôi cố gắng sắp xếp. Có bất cứ điều gì tôi có thể làm để tránh locale chậm khủng khiếpCompare nhưng vẫn duy trì hỗ trợ cho các chuỗi địa phương?
Cân nhắc quay vòng một công nhân web để thực hiện sắp xếp dựa trên 'localeCompare' không đồng bộ. Bạn có thể thấy rằng thời gian dành cho việc tuần tự hóa và deserializing số lượng dữ liệu đó vượt quá những lợi ích của việc làm nó không đồng bộ, nhưng nó đáng để quay. –
Điều đó có thể hoạt động nhưng 2 giây vẫn thực sự chậm để hiển thị kết quả. –
Bạn có thể xem xét một cách tiếp cận khác - như giữ danh sách được sắp xếp ngay từ đầu, vì vậy bạn không bao giờ cần phải sắp xếp nó một cách rõ ràng. dữ liệu đến từ đâu????? Có một số cấu trúc dữ liệu tự sắp xếp cho JavaScript đã được triển khai: http://stackoverflow.com/a/5309821/139010 hoặc http://stackoverflow.com/a/3809836/139010 –