Yeah...
~/Загрузки/node-v14.16.0-linux-x64/bin/*node  dhry2_node.js*
Runtime initialized after 16328.03651200002 ms
dhry2: 10000 181.949037 31.280845
dhry2: 20000 353.980880 32.157215
dhry2: 40000 720.280341 31.607247
dhry2: 80000 1366.479560 33.320774
dhry2: 160000 2578.543112 35.316188
dhry2: 320000 5049.154954 36.071111

~/Загрузки/node-v14.16.0-linux-x64/bin/*node --liftoff --no-wasm-tier-up
 dhry2_node.js*
dhry2: 10000 236.612041 24.054227
dhry2: 20000 500.253110 22.754560
dhry2: 40000 900.747170 25.274660
dhry2: 80000 1808.096051 25.182377
dhry2: 160000 3842.752959 23.697676


вт, 2 мар. 2021 г. в 02:43, Alon Zakai <alonza...@gmail.com>:

> IMaybe node 12 did not yet have baseline compiler support for wasm. That
> could explain the 30 seconds delay, as it fully optimizes all the code
> before it runs. Asyncify can generate bigger code, which makes this worse.
>
> A newer node may not have the problem, and should run the baseline
> compiler by default, like on the web. You can force a newer node to use the
> optimizing compiler with --liftoff --no-wasm-tier-up and that should be
> slow once more, as a test to verify this is the issue.
>
> On Sun, Feb 28, 2021 at 7:59 PM Александр Гурьянов <caiiiy...@gmail.com>
> wrote:
>
>> I found something, this huge loading time only happens in -s ASYNCIFY=1
>> and only if I add CPU_Core_Normal_Run to ASYNCIFY_WHITELIST, i think it
>> happens
>> because of function size.
>>
>> -s ASYNCIFY=1 +CPU_Core_Normal_Run
>> Runtime initialized after 32175.474978000857 ms
>> *(32 sec)*
>> func: CPU_Core_Normal_Run\28\29
>>  [binary-bytes] : 245307 (*239kb*)
>>  [total]        : 114037
>>  [vars]         : 22
>>  Binary         : 15203
>>  Block          : 8136
>>  Break          : 4471
>>  Call           : 1250
>>  CallIndirect   : 1120
>>  Const          : 20921
>>  Drop           : 1693
>>  GlobalGet      : 7836
>>  GlobalSet      : 2
>>  If             : 6666
>>  Load           : 7368
>>  LocalGet       : 17195
>>  LocalSet       : 13046
>>  Loop           : 6
>>  Return         : 1
>>  Select         : 1908
>>  Store          : 3193
>>  Switch         : 48
>>  Unary          : 3968
>>  Unreachable    : 6
>>
>> -s ASYNCIFY=1 -CPU_Core_Normal_Run
>> Runtime initialized after 689.4367050006986 ms
>> *(0.6 sec)*
>> func: CPU_Core_Normal_Run\28\29
>>  [binary-bytes] : 157675  (*153k*)
>>  [total]        : 64879
>>  [vars]         : 14
>>  Binary         : 10832
>>  Block          : 3166
>>  Break          : 2815
>>  Call           : 1250
>>  CallIndirect   : 1120
>>  Const          : 13764
>>  Drop           : 37
>>  GlobalGet      : 1
>>  GlobalSet      : 2
>>  If             : 1803
>>  Load           : 7342
>>  LocalGet       : 11878
>>  LocalSet       : 7304
>>  Loop           : 6
>>  Select         : 54
>>  Store          : 3171
>>  Switch         : 48
>>  Unary          : 281
>>  Unreachable    : 5
>>
>> Is it possible to do something automatically? Maybe split this function
>> to chunks?
>>
>>
>> пн, 8 февр. 2021 г. в 16:40, Александр Гурьянов <caiiiy...@gmail.com>:
>>
>>> Hi. I created a test program to estimate performance of my program. I
>>> am trying to use it both in browser and node environment. Test program
>>> works fine in both environments. However startups in node took up to
>>> 30 sec, while in browser it starts instantly. I don’t understand why.
>>>
>>> I use an release build with -s ASYNCIFY = 1, my node.js script:
>>>
>>>
>>> ```
>>> const { performance } = require('perf_hooks');
>>> const dhry2 = require("./dhry2.js");
>>>
>>> const startedAt = performance.now();
>>> const Module = {
>>>     log: console.log,
>>>     performance,
>>>     onRuntimeInitialized: () => {
>>>        console.log("Runtime initialized after", performance.now() -
>>> startedAt, "ms");
>>>        Module.callMain([]);
>>>     },
>>> };
>>>
>>> dhry2(Module);
>>> ```
>>>
>>> And for browser:
>>> ```
>>> <!DOCTYPE html>
>>> <html>
>>>     <head>
>>>         <script src="dhry2.js"></script>
>>>         <meta name="viewport" content="width=device-width,
>>> initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
>>>     </head>
>>>     <body>
>>>         <button onclick="javascript:start()">Start</button>
>>>         <br/>
>>>         <div id="stdout"></div>
>>>         <script>
>>>          var stdout = document.getElementById("stdout");
>>>
>>>          function start() {
>>>              WDHRY2({
>>>                  log: function(message) {
>>>                  },
>>>                  print: function(message) {
>>>                      if (message.startsWith("dhry2")) {
>>>                          console.log(message);
>>>                          stdout.innerHTML = stdout.innerHTML + "<br/>"
>>> + message;
>>>                      }
>>>                  },
>>>              }).then(function(m) {
>>>                  m.callMain([]);
>>>              });
>>>          };
>>>         </script>
>>>     </body>
>>> </html>
>>> ```
>>>
>>> Node.js version starts in 30 sec, while browser versions starts
>>> immediately. Node hangs after leaving instantiateArrayBuffer and
>>> before entering receiveInstantiatedSource.
>>> I think it doing something, but I don't understand what. I profiled
>>> node but results is no obvious:
>>>
>>> ```
>>> Statistical profiling result from isolate-0x36df400-1353021-v8.log,
>>> (28109 ticks, 0 unaccounted, 0 excluded).
>>>
>>>  [Shared libraries]:
>>>    ticks  total  nonlib   name
>>>      44    0.2%
>>> /home/caiiiycuk/sdk/emsdk/node/12.18.1_64bit/bin/node
>>>       5    0.0%          /usr/lib/x86_64-linux-gnu/libc-2.31.so
>>>       1    0.0%          /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
>>>
>>>  [JavaScript]:
>>>    ticks  total  nonlib   name
>>>       1    0.0%    0.0%  Function: *wasm-function[2219]
>>>
>>>  [C++]:
>>>    ticks  total  nonlib   name
>>>   27974   99.5%   99.7%  __pthread_cond_wait
>>>      35    0.1%    0.1%
>>>
>>> node::native_module::NativeModuleEnv::CompileFunction(v8::FunctionCallbackInfo<v8::Value>
>>> const&)
>>> ...
>>>  [Summary]:
>>>    ticks  total  nonlib   name
>>>       1    0.0%    0.0%  JavaScript
>>>   28058   99.8%  100.0%  C++
>>> ...
>>> [C++ entry points]:
>>>    ticks    cpp   total   name
>>>      45   76.3%    0.2%  v8::internal::Builtin_HandleApiCall(int,
>>> unsigned long*, v8::internal::Isolate*)
>>>       3    5.1%    0.0%  node::inspector::(anonymous
>>> namespace)::InspectorConsoleCall(v8::FunctionCallbackInfo<v8::Value>
>>> const&)
>>>
>>>  [Bottom up (heavy) profile]:
>>>   Note: percentage shows a share of a particular caller in the total
>>>   amount of its parent calls.
>>>   Callers occupying less than 1.0% are not shown.
>>>
>>>    ticks parent  name
>>>   27974   99.5%  __pthread_cond_wait
>>>
>>> ```
>>>
>>> I attached the build with -g you can test it both in browser and node.
>>> (link:
>>> https://drive.google.com/file/d/1lucme6dv-9D5yB-Wu9PieUjY5ag0YvxY/view?usp=sharing
>>> )
>>> borwser: dhry2.html
>>> node: node dhry2_node.js
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to emscripten-discuss+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVGUUqxv0m_4JSr-TF-z%3D7Bfxe6-M9iaF6HESGMhguHgsQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVGUUqxv0m_4JSr-TF-z%3D7Bfxe6-M9iaF6HESGMhguHgsQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to emscripten-discuss+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpT-BQ3fQqzrZz%3DJzWC2RRFdoKkdL%2Bm36iCL15ErtR_Bbg%40mail.gmail.com
> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpT-BQ3fQqzrZz%3DJzWC2RRFdoKkdL%2Bm36iCL15ErtR_Bbg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVHVGiKY_-J%2B7%2B2fPh3GmS9Ft_oxBWnp%2BxV5YvaXw8Vasg%40mail.gmail.com.

Reply via email to