2012-10-13 11 views
10

Przeczytałem, że z rzutką Twoja aplikacja może zostać uruchomiona do 10 razy szybciej z powodu migawek. Czy ktoś może wyjaśnić, czym naprawdę jest i jak działa? W jakim rodzaju aplikacji korzystałbym z migawek?Co to jest koncepcja migawki w dart?

Odpowiedz

9

Migawki Dart są jak Smalltalk images w tym sensie, że umożliwiają prawie natychmiastowy start aplikacji. Jednak w przeciwieństwie do obrazów Smalltalk, migawki nie przechowują stanu programu.

Jest to szczególnie przydatne w przypadku wolniejszych urządzeń mobilnych, ponieważ są one z natury wolniejsze, a także ograniczone przez pamięć znacznie bardziej niż system biurkowy. Ten powód i fakt, że użycie baterii wymaga od nas zamknięcia niepotrzebnych programów, powoduje, że ważna jest szybkość uruchamiania.

Dart odpowiada na ten problem powolnego uruchamiania z funkcją migawki sterty, podobną do systemu obrazowego Smalltalk. Sterta aplikacji jest przesuwana, a wszystkie obiekty są zapisywane do prostego pliku. Uwaga: w tej chwili, dystrybucja Dart jest dostarczana z narzędziem, które uruchamia maszynę Dart VM, ładuje kod aplikacji i tuż przed wywołaniem głównego, wykonuje migawkę sterty. Dart VM może użyć takiego pliku migawki, aby szybko wczytać aplikację.

Funkcja migawki służy również do serializacji wykresów obiektów, które są wysyłane między obszarami izolowanymi przez strzałki (serializowane za pomocą SnapshotWriter).

Obecnie nie znam żadnego sposobu inicjowania migawki lub radzenia sobie z nimi. W przyszłości spodziewam się, że możliwe będzie serwowanie pliku migawki z serwera WWW i natychmiastowe przetwarzanie przez przeglądarkę Dart VM.

Sam format snapshot jest wieloplatformowy, co oznacza, że ​​działa między 32-bitowymi, 64-bitowymi komputerami i tak dalej. Format został utworzony w taki sposób, aby można go było szybko wczytać do pamięci, kładąc nacisk na minimalizowanie dodatkowej pracy, takiej jak korekta wskaźnika.

Oto kod źródłowy snapshot.cc: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc

i testy: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc

Więc dlatego można go przyspieszyć o uruchomieniu aplikacji przez współczynnik 10, ponieważ jest to nie się wiązka kodu źródłowego, takiego jak JavaScript, który jest wysyłany tak jak jest i powoli przetwarzany później.

A gdzie chciałbyś go użyć? Gdziekolwiek możesz. Po stronie serwera w zasadzie to już się dzieje (i nie ma znaczenia). ale po stronie klienta, to nie jest możliwe jeszcze. Jak rozumiem, będzie można wyświetlać te migawki do przeglądarki, aby rozpocząć natychmiastowe uruchamianie, ale naprawdę trzeba poczekać, ponieważ nie jest ona dostępna od teraz.

+0

Należy zauważyć, że zaobserwowaliśmy poprawę startową o 10X podczas używania snapshotów do załadowania dart2js. –

+0

@SethLadd możesz wyjaśnić, co masz na myśli? A może edytuj moją odpowiedź - w końcu jest to wiki :) –

+0

Wstępne testy pokazują, że uruchamianie dart2js z migawki jest 10 razy szybsze niż uruchamianie dart2js z kodu źródłowego. Wciąż jest wcześnie, ale dane wyglądają obiecująco. –