Hi, V8's code cache in Chrome can significantly improve WebApp's startup time, code caching is very important to modern WebApp as WebApp using more and more js. As I dig a little deeper in V8 code caching, I wonder whether we can do more improvement on it. Below is the trace result of http://m.sm.cn/s?q=%E9%A9%AC%E4%BA%91&from=smor&safe=1&snum=6, before I capture this trace, I have browse this url 4 times to make sure chrome generated code cache.(You can find V8.CompileDeserialize in the table.)
Though we have code cache, we still need 501ms in CompileCode, 1/3 of total JS time. What's the problem? I think it's because we only cache the top level functions and IIFEs compile result. Is there any possible to store the code cache not just after the script is compiled, but later like the page is loaded or time to interactive? If we can store the code cache a little later, I think we can store much more functions those are not in top level but will be called shortly after, therefore we can significantly shorten the startup time of WebApp next time. Function Wall Wall self CPU CPU self wall average count v8.callFunction 716.022 ms 616.025 ms 2.257 ms 1.809 ms 9.625 ms 64 v8.compile 227.817 ms 151.827 ms 9.691 ms 7.658 ms 0.791 ms 192 V8.Compile 49.760 ms 30.138 ms 35.384 ms 22.936 ms 0.158 ms 191 V8.CompileCode 501.925 ms 378.723 ms 143.903 ms 117.921 ms 0.379 ms 1000 V8.CompileDeserialize 1.436 ms 1.186 ms 1.436 ms 1.186 ms 0.237 ms 5 V8.CompileIgnition 48.886 ms 35.360 ms 48.886 ms 35.360 ms 0.035 ms 1018 V8.CompileScript 208.867 ms 137.379 ms 13.413 ms 9.672 ms 0.716 ms 192 V8.DeoptimizeCode 0.038 ms 0.035 ms 0.038 ms 0.035 ms 0.035 ms 1 V8.Execute 2,083.692 ms 1,662.409 ms 1,003.724 ms 764.488 ms 5.523 ms 301 V8.GC_Objects_Stats 0.000 ms 0.000 ms 0.000 ms 0.000 ms 0.000 ms 2 V8.GCCompactor 74.109 ms 66.842 ms 0.179 ms 0.171 ms 33.421 ms 2 V8.GCPhantomHandleProcessingCallback 0.244 ms 0.210 ms 0.105 ms 0.070 ms 0.105 ms 2 V8.GCScavenger 22.378 ms 19.512 ms 0.371 ms 0.219 ms 9.756 ms 2 V8.ICStats 0.000 ms 0.000 ms 0.000 ms 0.000 ms 0.000 ms 1 V8.NewContext 97.478 ms 87.695 ms 19.344 ms 17.471 ms 87.695 ms 1 v8.newInstance 1.829 ms 1.521 ms 0.782 ms 0.567 ms 0.035 ms 43 V8.OptimizeCode 6.630 ms 6.548 ms 0.118 ms 0.118 ms 6.548 ms 1 V8.ParseFunction 144.272 ms 116.927 ms 144.272 ms 116.927 ms 0.159 ms 735 V8.ParseProgram 129.480 ms 85.579 ms 96.469 ms 58.753 ms 0.448 ms 191 V8.PreParse 33.011 ms 26.826 ms 33.011 ms 26.826 ms 0.363 ms 74 V8.RecompileSynchronous 6.512 ms 6.430 ms 6.512 ms 6.430 ms 6.430 ms 1 v8.run 1,376.877 ms 1,053.397 ms 6.397 ms 5.232 ms 5.486 ms 192 V8.RunMicrotasks 2.101 ms 1.444 ms 2.101 ms 1.444 ms 0.206 ms 7 V8.ScriptCompiler 218.126 ms 144.169 ms 9.259 ms 6.790 ms 0.751 ms 192 -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
