jsc-android-buildscripts icon indicating copy to clipboard operation
jsc-android-buildscripts copied to clipboard

JSC is very slow when using cryptography

Open sirpy opened this issue 5 years ago • 6 comments

Question

When using javascript based crypto libraries such as hdkey (uses crypto.createHmac) performance is very low generating 10 addresses with hdkey takes about 1.8 seconds with latest JSC. for comparison: bundled JSC around 4 sec react-native-v8 without JIT also around 4 sec ios simulator 100mili react-native-v8 with JIT 200mili

Maybe the jsc-bundle is not really configured for JIT? any other explanation for the slow runtime on JSC?

sirpy avatar Jan 12 '20 12:01 sirpy

What version of JSC are you using? Some versions of 241213 had JIT completely turned off.

newyankeecodeshop avatar Jan 13 '20 13:01 newyankeecodeshop

i've tried the packaged version with 0.61 and the latest npm jsc-android the packaged version is 4 seconds latest npm is 1.8 seconds where can i see the JIT flag?

sirpy avatar Jan 13 '20 13:01 sirpy

JSC has four tiers of JIT executions. (Reference from https://webkit.org/blog/9329/a-new-bytecode-format-for-javascriptcore/)

  • Low Level Interpreter (LLInt): the start-up interpreter
  • Baseline JIT: a template JIT
  • DFG JIT: a low-latency optimizing compiler
  • FTL JIT: a high-throughput optimizing compiler

For balancing between resource usage and performance, we only enable LLInt and Baseline JIT. If you would like to check the build flags, here it is

Kudo avatar Jan 14 '20 01:01 Kudo

thanks! i'll try these

sirpy avatar Jan 17 '20 13:01 sirpy

Hi @Kudo, @sirpy

So if we want to enable all the JITs, we just simply need to set DENABLE_DFG_JIT=ON and DENABLE_FTL_JIT=ON?

khoanguyen-yang avatar Dec 09 '22 08:12 khoanguyen-yang

@sirpy I dont recall the results or if I was able to build and use JSC with JIT. We are still using v8, so I guess it still has the best performance

sirpy avatar Dec 09 '22 08:12 sirpy