Tất cả chúng ta đều biết rằng vòng lặp for nhanh hơn so với hàm for each hoặc javascript vì bên dưới các hàm javascript có thể đang sử dụng vòng lặp for hoặc thứ gì đó khác mà tôi không chắc. Tôi đã thực hiện một thử nghiệm đơn giản với một mảng đối tượng và thực hiện một số thao tác thông qua vòng lặp for/cho mỗi hàm javascript và quan sát thời gian cần thiết để thực thi
1. Giảm so với vòng lặp so với foreach_______0_______Các kết quả này là từ các ví dụ nhỏ và có thể thay đổi tùy theo thao tác được thực hiện, lựa chọn thực thi env. và sự lựa chọn của VM
Ghi chú. Dưới đây là danh sách các kết quả và mã có thể được tìm thấy ở đây
Tất cả các kết quả cho thấy rõ ràng rằng vòng lặp for thành thạo hơn for each so với map/reduce/filter/find
Bản đồ/Giảm/Lọc/Tìm bị chậm vì nhiều lý do, một số trong số đó là
- Họ có một cuộc gọi lại để thực hiện để hoạt động như một chi phí
- Có rất nhiều trường hợp góc mà các hàm javascript xem xét như getters, mảng thưa thớt và kiểm tra các đối số được truyền có phải là một mảng hay không, điều này làm tăng thêm chi phí
tôi tìm thấy một lib. triển khai lại một số hàm JavaScript gốc dựng sẵn phổ biến
Nhưng việc lựa chọn cách sử dụng không chỉ phụ thuộc vào hiệu suất mà còn có nhiều yếu tố khác cần được xem xét, một số trong số đó là
- Khả năng đọc mã và khả năng bảo trì
- dễ mã
- Tốc độ mã hóa
- Thực hiện so với tối ưu hóa
- Lựa chọn cá nhân
Cá nhân tôi thích bản đồ, rút gọn, lọc, tìm và tôi đã sử dụng chúng trong một thời gian dài. Họ đã giúp tôi viết mã rõ ràng, chính xác, nhanh chóng và phù hợp với quá trình suy nghĩ của tôi. Tôi sử dụng vòng lặp for khi không còn lựa chọn nào khác
Đối với tối ưu hóa, ánh xạ/giảm/bộ lọc/tìm thay thế phải là tùy chọn cuối cùng hoặc không phải là tùy chọn tùy thuộc vào mức độ tối ưu hóa được yêu cầu
Ghi chú. Nếu bạn đang sử dụng các vòng lặp, hãy luôn sử dụng chúng một cách tự nhiên vì các trình biên dịch hiện đủ thông minh để tối ưu hóa chính xác các vòng lặp đặc ngữ
Cập nhật. Tại đây bạn có thể tìm thấy kết quả cho tập dữ liệu lớn và tính toán nặng
Tôi viết bài trên overflowjs. com và phần 2 của bài viết này so sánh bộ nhớ cache ấm của ramada inline caching và một số nội dung của GC. Vì vậy, đừng quên theo dõi trên overflowjs. com
Vui lòng cân nhắc nhập email của bạn tại đây nếu bạn muốn được thêm vào danh sách email của tôi và theo dõi tôi trên phương tiện để đọc thêm bài viết về javascript và trên github để xem mã điên rồ của tôi. Nếu có gì chưa rõ hoặc muốn chỉ ra điều gì, hãy comment xuống bên dưới
Trong bài viết này, chúng ta sẽ xem cách nhanh nhất để lặp qua một mảng trong JavaScript. JavaScript có sẵn rất nhiều vòng lặp để thực hiện các phép lặp. Các vòng lặp sau đây cùng với cú pháp của chúng được hỗ trợ bởi JavaScript
cho vòng lặp. Một vòng lặp for bao gồm một khởi tạo biến, một điều kiện để đánh giá biến và một biểu thức để xác định kết thúc của vòng lặp. Nó thực hiện một số lần lặp cố định, do đó nó phải được sử dụng trong các tình huống mà số lần lặp lại của vòng lặp đã được biết trước
Trong trường hợp hằng số, chúng ta có loại cú pháp sau
// for loop that performs 10k iterations for [let i = 0; i < 10000; i++] { // Statements }
Trong trường hợp mảng
// Loop that runs up till the length // of the array for [i = 0; i < array.length; i++] { // Statements }
trong khi lặp lại. Một vòng lặp while thực hiện khởi tạo bên ngoài, trước khi bắt đầu vòng lặp, sau đó một điều kiện được xác thực và sau đó biểu thức được đánh giá. Việc thực hiện vòng lặp while tiếp tục cho đến khi thỏa mãn điều kiện
Vòng lặp while trong trường hợp mảng, hãy làm theo cú pháp
// Initialization let x = 0; // Condition checking while [x { // Statements }]
cho…của vòng lặp. Đây là phiên bản mới của vòng lặp for. Vòng lặp này yêu cầu gán tên tạm thời cho từng phần tử của mảng. Nó chạy cực nhanh trong trường hợp tập dữ liệu nhỏ. Nó dễ đọc hơn nhiều so với vòng lặp for truyền thống. Nó thực hiện một phép lặp trên các đối tượng lặp có sẵn của JavaScript như Chuỗi, Bản đồ, Tập hợp và Mảng