2012-10-13 37 views
10

Tôi đã đọc rằng với phi tiêu ứng dụng của bạn có thể bắt đầu lên đến 10x nhanh hơn vì ảnh chụp nhanh. Bất cứ ai có thể giải thích những gì nó thực sự là và làm thế nào nó hoạt động? Trong loại ứng dụng nào tôi sẽ sử dụng ảnh chụp nhanh?Khái niệm chụp nhanh trong phi tiêu là gì?

Trả lời

9

Ảnh chụp nhanh của Dart giống như Smalltalk images theo nghĩa là chúng cho phép khởi động ứng dụng gần như ngay lập tức. Tuy nhiên, không giống như hình ảnh Smalltalk, Snapshots không lưu trữ trạng thái chương trình.

Điều này đặc biệt hữu ích trong các thiết bị di động chậm hơn vì chúng vốn chậm hơn và bị giới hạn bởi bộ nhớ nhiều hơn hệ thống máy tính để bàn. Lý do đó và thực tế là việc sử dụng pin khiến chúng tôi đóng các chương trình không cần thiết làm cho tốc độ khởi động trở nên quan trọng.

Làm nổi bật địa chỉ của sự cố khởi động chậm này với tính năng heap snapshot, tương tự như hệ thống hình ảnh của Smalltalk. Heap của một ứng dụng được duyệt qua và tất cả các đối tượng được ghi vào một tệp đơn giản. Lưu ý: tại thời điểm này, phân phối Dart phân phối với công cụ kích hoạt máy ảo Dart, tải mã của ứng dụng và ngay trước khi gọi chính, nó sẽ chụp nhanh heap. Máy ảo Dart có thể sử dụng tệp ảnh chụp nhanh này để tải nhanh ứng dụng.

Tính năng chụp nhanh cũng được sử dụng để tuần tự hóa các đồ thị đối tượng đang được gửi giữa các giá trị cách ly Dart (được tuần tự hóa với SnapshotWriter).

Hiện tại tôi không biết cách nào để bắt đầu chụp nhanh hoặc xử lý chúng. Trong tương lai, tôi hy vọng nó có thể để phục vụ một tập tin ảnh chụp từ máy chủ web và có được xử lý bởi trình duyệt Dart VM ngay lập tức.

Định dạng bản chụp nhanh là ý nghĩa đa nền tảng mà nó hoạt động giữa các máy 32 bit, 64 bit, v.v. Các định dạng đã được thực hiện để nó nhanh chóng để đọc vào bộ nhớ với một sự nhấn mạnh vào việc giảm thiểu thêm công việc như sửa chữa con trỏ.

Dưới đây là các mã nguồn cho snapshot.cc: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc

và các bài kiểm tra: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc

Vì vậy, lý do tại sao nó có thể tăng tốc độ một khởi động ứng dụng bằng hệ số 10 là vì nó không một bó mã nguồn giống như JavaScript được gửi dưới dạng và được xử lý từ từ sau đó.

Và bạn muốn sử dụng ở đâu? Bất cứ nơi nào bạn có thể có thể. Về phía máy chủ, nó về cơ bản đã xảy ra cho bạn (và không quan trọng thực sự). nhưng ở phía khách hàng, điều đó là không thể chưa. Theo tôi hiểu nó, nó sẽ có thể để phục vụ các ảnh chụp nhanh cho trình duyệt để khởi động ngay lập tức, nhưng bạn thực sự phải chờ đợi vì nó không có sẵn như của bây giờ.

+0

Lưu ý rằng chúng tôi đã thấy cải tiến khởi động là 10X khi sử dụng ảnh chụp nhanh để tải dart2js. –

+0

@SethLadd bạn có thể xây dựng ý nghĩa của mình không? Hoặc có thể chỉnh sửa câu trả lời của tôi - đây là một wiki sau tất cả :) –

+0

Thử nghiệm ban đầu cho thấy rằng bắt đầu từ dart2js từ ảnh chụp nhanh hơn 10 lần so với khởi động dart2js từ mã nguồn. Nó vẫn còn sớm, nhưng dữ liệu trông đầy hứa hẹn. –

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