So if I'm reading the qt doc [0] and src/mksnapshot.cc [1] correctly, mksnapshot expects to be run like something like
./mksnapshot [optional v8 engine args] mystartup.js mysnapshot.cc where mystartup.js is a JS file that runs without error. I would expect mystartup.js to be a significant enough part of your app that you can measure its compilation during startup. It should also be composed of the "common" part of your app; the part of your app that must run as a prerequisite for all execution paths. For v8, that means it uses mksnapshot to build the JS built-in objects into the runtime startup of itself (a sort bootstrapping technique). It's a process that takes less than 5 ms on an Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz. I would imagine it's a lot more beneficial in Chrome/Chromium where DOM and a bunch of UI, network, crypto, etc., takes multiple MBs to load. Where this gets interesting is when your mystartup.js depends on Native objects or Native code not built-in to v8 or JS built-ins. mksnapshot does not seem to take this into account. However, it appears, that if you modify src/mksnapshot.cc somewhere after here [2] but before [3], then your mystartup.js *CAN* depend (and compile against) Native code just as is done in samples/shell.cc [4] to load the print/read/load/quit/version Native code. You'll have to rebuild v8 and you'll have to get your source tree co-mingled with v8's tree/build process, but such is life. [0] http://qt-project.org/wiki/V8Snapshot [1] https://github.com/v8/v8/blob/master/src/mksnapshot.cc [2] https://github.com/v8/v8/blob/134ebca3d871784966ea068d06210d9fe70ec4ab/src/mksnapshot.cc#L370 [3] https://github.com/v8/v8/blob/134ebca3d871784966ea068d06210d9fe70ec4ab/src/mksnapshot.cc#L395 [4] https://github.com/v8/v8/blob/134ebca3d871784966ea068d06210d9fe70ec4ab/samples/shell.cc#L96 On Mon, Nov 10, 2014 at 7:06 PM, Flying Jester <foolkingcr...@gmail.com> wrote: > Snapshots are enabled all the time unless you expressly disable them with > gyp. > > > On Monday, November 10, 2014 4:59:37 PM UTC-9, Chris E wrote: >> >> Hello all, >> >> I am trying to use v8 snapshots to improve the start-up time of a v8 >> application (like what chrome/chromium does), but I am unable to find >> sufficient documentation to understand and use this feature. >> >> I have looked at the following references, but it is still not clear to me >> exactly how to make the best use of snapshots for performance. >> https://developers.google.com/v8/embed >> http://qt-project.org/wiki/V8Snapshot >> >> The QT link seemed the most useful so can anyone verify the correctness of >> this reference? >> >> So basically we have to compile and run our JS application with an >> emulator and somehow generate the snapshot.cc using mksnapshot? >> If our JS application is large and has many features, how do we know how >> much of it should run before creating the snapshot? >> How is this snapshot affected by libraries (both C++ and JS) that get >> loaded dynamically? >> >> Also it sounds like we have to be careful that the snapshot is not 'stale' >> or outdated with respect to the code that we run to create the snapshot >> right? >> >> Thank you so much for the help and clarifications. > > -- > -- > v8-users mailing list > v8-users@googlegroups.com > http://groups.google.com/group/v8-users > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-users+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.