title: How to read nodejs internal profiler tick-processor output
body: <p>I'm interested in profiling my Node.js application.
  I've started it with <code>--prof</code> flag, and obtained a <code>v8.log</code> file.
  I've taken the windows-tick-processor and obtained a supposedly human readable profiling log.
  At the bottom of the question are a few a small excerpts from the log file, which I am completely failing to understand.</p>
  
  <p>I get the ticks statistical approach. I don't understand what <code>total</code> vs <code>nonlib</code> means.
  Also I don't understand why some things are prefixed with <code>LazyCompile</code>, <code>Function</code>, <code>Stub</code> or other terms.</p>
  
  <p>The best answer I could hope for is the complete documentation/guide to the tick-processor output format, completely explaining every term, structure etc...</p>
  
  <p>Barring that, I just don't understand what lazy-compile is. Is it compilation? Doesn't every function get compiled exactly once? Then how can compilation possibly be a significant part of my application execution? The application ran for hours to produce this log, and I'm assuming the internal JavaScript compilation takes milliseconds.
  This suggests that lazy-compile is something that doesn't happen once per function, but happens during some kind of code evaluation? Does this mean that everywhere I've got a function definition (for example a nested function), the internal function gets "lazy-compiled" each time?</p>
  
  <p>I couldn't find any information on this anywhere, and I've been googling for DAYS...</p>
  
  <p>Also I realize there are a lot of profiler flags. Additional references on those are also welcome.</p>
  
  <pre>
  [JavaScript]:
     ticks  total  nonlib   name
    88414    7.9%   20.1%  LazyCompile: *getUniqueId C:\n\dev\SCNA\infra\lib\node-js\utils\general-utils.js:16
    22797    2.0%    5.2%  LazyCompile: *keys native v8natives.js:333
    14524    1.3%    3.3%  LazyCompile: Socket._flush C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:365
    12896    1.2%    2.9%  LazyCompile: BasicSerializeObject native json.js:244
    12346    1.1%    2.8%  LazyCompile: BasicJSONSerialize native json.js:274
     9327    0.8%    2.1%  LazyCompile: * C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:194
     7606    0.7%    1.7%  LazyCompile: *parse native json.js:55
     5937    0.5%    1.4%  LazyCompile: *split native string.js:554
     5138    0.5%    1.2%  LazyCompile: *Socket.send C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\zmq\lib\index.js:346
     4862    0.4%    1.1%  LazyCompile: *sort native array.js:741
     4806    0.4%    1.1%  LazyCompile: _.each._.forEach C:\n\dev\SCNA\infra\node_modules\underscore\underscore.js:76
     4481    0.4%    1.0%  LazyCompile: ~_.each._.forEach C:\n\dev\SCNA\infra\node_modules\underscore\underscore.js:76
     4296    0.4%    1.0%  LazyCompile: stringify native json.js:308
     3796    0.3%    0.9%  LazyCompile: ~b native v8natives.js:1582
     3694    0.3%    0.8%  Function: ~recursivePropertiesCollector C:\n\dev\SCNA\infra\lib\node-js\utils\object-utils.js:90
     3599    0.3%    0.8%  LazyCompile: *BasicSerializeArray native json.js:181
     3578    0.3%    0.8%  LazyCompile: *Buffer.write buffer.js:315
     3157    0.3%    0.7%  Stub: CEntryStub
     2958    0.3%    0.7%  LazyCompile: promise.promiseDispatch C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\q\q.js:516
  </pre>
  
  <pre>
  
  88414    7.9%  LazyCompile: *getUniqueId C:\n\dev\SCNA\infra\lib\node-js\utils\general-utils.js:16
    88404  100.0%    LazyCompile: *generateId C:\n\dev\SCNA\infra\lib\node-js\utils\general-utils.js:51
    88404  100.0%      LazyCompile: *register C:\n\dev\SCNA\infra\lib\node-js\events\pattern-dispatcher.js:72
    52703   59.6%        LazyCompile: * C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-driver.js:216
    52625   99.9%          LazyCompile: *_.each._.forEach C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\underscore\underscore.js:76
    52625  100.0%            LazyCompile: ~usingEventHandlerMapping C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-driver.js:214
    35555   40.2%        LazyCompile: *once C:\n\dev\SCNA\infra\lib\node-js\events\pattern-dispatcher.js:88
    29335   82.5%          LazyCompile: ~startAction C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-driver.js:201
    25687   87.6%            LazyCompile: ~onActionComplete C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-logic.js:130
     1908    6.5%            LazyCompile: ~b native v8natives.js:1582
     1667    5.7%            LazyCompile: _fulfilled C:\n\dev\SCNA\runtime-environment\load-generator\node_modules\q\q.js:795
     4645   13.1%          LazyCompile: ~terminate C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-driver.js:160
     4645  100.0%            LazyCompile: ~terminate C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-logic.js:171
     1047    2.9%          LazyCompile: *startAction C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-driver.js:201
     1042   99.5%            LazyCompile: ~onActionComplete C:\n\dev\SCNA\runtime-environment\load-generator\lib\vuser-driver\mdrv-logic.js:130
  </pre>