Bài viết đề cập đến những khó khăn tối ưu hóa đến từ các ngôn ngữ cực kỳ năng động như JavaScript, cộng với nguyên mẫu thừa kế.
Trong các ngôn ngữ như Ruby hoặc JavaScript, cấu trúc chương trình có thể thay đổi khi chạy. Các lớp có thể nhận được một phương thức mới, các hàm có thể được eval() 'ed vào sự tồn tại, và nhiều hơn nữa. Điều này làm cho khó khăn hơn cho các runtimes để tối ưu hóa mã của họ, bởi vì cấu trúc không bao giờ được đảm bảo được thiết lập.
Thừa kế nguyên mẫu khó tối ưu hóa hơn các ngôn ngữ dựa trên lớp truyền thống khác. Tôi nghi ngờ điều này là bởi vì có nhiều năm kinh nghiệm nghiên cứu và triển khai cho các máy ảo dựa trên lớp.
Điều thú vị là V8 (công cụ JavaScript của Chrome) sử dụng các lớp ẩn như một phần của chiến lược tối ưu hóa của nó. Tất nhiên, JS không có các lớp, do đó bố cục đối tượng phức tạp hơn trong V8.
Bố cục đối tượng trong V8 yêu cầu tối thiểu 3 từ trong tiêu đề. Ngược lại, Dart VM chỉ yêu cầu 1 từ trong tiêu đề. Kích thước và cấu trúc của đối tượng Dart được biết tại thời gian biên dịch.Điều này rất hữu ích cho các nhà thiết kế VM.
Ví dụ khác: trong Dart, có danh sách thực (còn gọi là mảng). Bạn có thể có một danh sách độ dài cố định, dễ dàng hơn để tối ưu hóa hơn so với các mảng không thực sự của JavaScript và luôn có độ dài thay đổi.
Đọc thêm về biên soạn Dart (và JavaScript) vào mã hiệu quả với các trình bày này: http://www.dartlang.org/slides/2013/04/compiling-dart-to-efficient-machine-code.pdf
chiều hiệu suất khác là thời gian khởi động. Khi các ứng dụng web trở nên phức tạp hơn, số lượng các dòng mã tăng lên. Thiết kế JavaScript làm cho việc tối ưu hóa khởi động khó khăn hơn, vì việc phân tích cú pháp và tải mã cũng thực thi mã. Trong Dart, ngôn ngữ đã được thiết kế cẩn thận để phân tích cú pháp nhanh chóng. Dart không thực thi mã khi nó tải và phân tích cú pháp các tệp.
Điều này cũng có nghĩa là máy ảo Dart có thể lưu bộ nhớ cache biểu diễn nhị phân của tệp được phân tích cú pháp (được gọi là ảnh chụp nhanh) để khởi động nhanh hơn nữa.
Điểm chuẩn hoặc điều đó không xảy ra. Suy đoán về hiệu suất của một cái gì đó chưa được phát hành là nhảm nhí. – fijal
Điều thú vị là Dart dường như ** chậm hơn ** so với JS. – c69