2012-10-13 3 views
10

다트를 사용하면 스냅 샷 때문에 응용 프로그램을 최대 10 배 빠르게 시작할 수 있습니다. 누구든지 그것이 실제로 무엇이며 어떻게 작동하는지 설명 할 수 있습니까? 어떤 종류의 응용 프로그램에서 스냅 샷을 사용합니까?dart의 스냅 샷 개념은 무엇입니까?

답변

9

다트의 스냅 샷은 거의 즉시 응용 프로그램을 시작할 수 있다는 점에서 Smalltalk images과 같습니다. 그러나 스몰 토크 이미지와 달리 스냅 샷은 프로그램 상태를 저장하지 않습니다.

느린 모바일 장치는 본질적으로 느리며 데스크톱 시스템보다 훨씬 많은 메모리로 인해 제한되기 때문에 특히 유용합니다. 배터리 사용이 불필요한 프로그램을 닫으려는 이유와 시작 속도가 중요한 이유입니다.

Dart는 Smalltalk의 이미지 시스템과 유사한 힙 스냅 샷 기능으로 느린 시작 문제를 해결합니다. 응용 프로그램의 힙이 가로 지르고 모든 객체가 간단한 파일에 기록됩니다. 참고 : 현재 Dart 배포판에는 Dart VM을 시작하고 응용 프로그램의 코드를로드하는 도구가 포함되어 있으며 main을 호출하기 전에 힙 스냅 샷이 필요합니다. Dart VM은 이러한 스냅 샷 파일을 사용하여 응용 프로그램을 빠르게로드 할 수 있습니다.

스냅 샷 기능은 Dart Isolates (SnapshotWriter로 직렬화)간에 전송되는 객체 그래프를 직렬화하는 데에도 사용됩니다.

현재 스냅 샷을 시작하거나 처리하는 방법에 대해 알지 못합니다. 앞으로는 웹 서버에서 스냅 샷 파일을 제공하고 브라우저 Dart VM에 의해 즉시 처리되도록하는 것이 가능할 것으로 기대됩니다.

스냅 샷 형식 자체는 크로스 플랫폼이므로 32 비트, 64 비트 시스템 등에서 작동합니다. 형식은 포인터 픽스 업과 같은 추가 작업 최소화에 중점을 두어 메모리로 빠르게 읽도록 만들어졌습니다. 이 하지을 때문에 그래서 10의 요인에 의해 응용 프로그램 시작 속도를 높일 수있는 이유는 http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc

: http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc

및 테스트 : 여기

소스 snapshot.cc에 대한 코드입니다 자바 스크립트와 같은 소스 코드는 그대로 보내고 이후에는 천천히 처리됩니다.

그리고 어디에서 사용 하시겠습니까? 네가 할 수있는 곳이면 어디든. 서버 측에서, 그것은 기본적으로 이미 당신을 위해 일어나고 있습니다 (그리고 정말로 중요하지 않습니다). 하지만 클라이언트 쪽에서는 가능하지 않습니다. 아직입니다. 내가 알기에이 스냅 샷을 즉시 시작할 수 있도록 브라우저에 제공 할 수는 있지만 현재로서는 사용할 수 없기 때문에 기다려야합니다.

+0

dart2js를로드하기 위해 스냅 샷을 사용할 때 10X의 시작 개선이 있음을 알아 두어야합니다. –

+0

@SethLadd 무슨 뜻인지 자세히 설명해 주시겠습니까? 또는 아마도 내 대답을 편집하십시오 - 어쨌든 wiki입니다. –

+0

초기 테스트 결과 스냅 샷에서 dart2js를 시작하는 것이 소스 코드에서 dart2js를 시작하는 것보다 10 배 빠른 것을 보여줍니다. 아직 이르지만 데이터는 유망 해 보입니다. –