GithubHelp home page GithubHelp logo

Comments (13)

chufengma avatar chufengma commented on May 10, 2024 5

@axemclion Thanks very much

This is my demo project:

https://github.com/chufengma/HermesTestDemo

Time-consuming comparison between JSC and Hermes

time

run demo

Run with Hermes

// Run with Hermes
# gradle.properties
useHermesEngine=true
# shell
./gradlew installDebug
// Run with JSC
# gradle.properties
useHermesEngine=false
# shell
./gradlew installDebug

from hermes.

chufengma avatar chufengma commented on May 10, 2024 1

@axe-fb updated https://github.com/chufengma/HermesTestDemo today and remove some un-needed dependencies(I'm sorry it took so long to update -。-).

from hermes.

axemclion avatar axemclion commented on May 10, 2024 1

@chufengma , I ran the tests 20 times, with updated ReactMarker listeners. I did not find that Hermes is slower. Here are the results.

Could you also get similar data, with the markers (sent you a PR) to see if you have a similar issue ?

Marker JSC Hermes
REACT_CONTEXT_THREAD_START 0 0
REACT_CONTEXT_THREAD_END 1 1
VM_INIT 1 1
VM_INIT 1 1
LOAD_REACT_NATIVE_SO_FILE_START 36 32
LOAD_REACT_NATIVE_SO_FILE_END 36 34
CREATE_REACT_CONTEXT_START 52 35
PROCESS_PACKAGES_START 54 39
PROCESS_CORE_REACT_PACKAGE_START 55 46
PROCESS_CORE_REACT_PACKAGE_END 60 47
CREATE_MODULE_START 67 47
CREATE_MODULE_END 69 47
CREATE_MODULE_START 69 47
CREATE_MODULE_END 69 48
CREATE_MODULE_START 69 49
CREATE_MODULE_END 72 49
CREATE_MODULE_START 72 49
CREATE_MODULE_END 72 50
CREATE_MODULE_START 72 50
CREATE_MODULE_END 73 51
CREATE_MODULE_START 73 51
CREATE_MODULE_END 74 51
CREATE_MODULE_START 74 51
CREATE_MODULE_END 74 52
CREATE_MODULE_START 74 52
CREATE_MODULE_END 75 52
CREATE_MODULE_START 75 52
CREATE_MODULE_END 75 53
CREATE_MODULE_START 75 53
CREATE_MODULE_END 76 54
CREATE_MODULE_START 76 54
CREATE_MODULE_END 77 55
CREATE_MODULE_START 77 55
CREATE_MODULE_END 79 56
CREATE_MODULE_START 79 56
CREATE_MODULE_END 80 56
CREATE_MODULE_START 80 56
CREATE_MODULE_END 80 57
CREATE_MODULE_START 80 57
CREATE_MODULE_END 81 58
CREATE_MODULE_START 81 58
CREATE_MODULE_END 82 79
CREATE_MODULE_START 82 79
CREATE_MODULE_END 100 80
CREATE_MODULE_START 100 80
CREATE_MODULE_END 101 80
CREATE_MODULE_START 101 80
CREATE_MODULE_END 102 81
CREATE_MODULE_START 102 81
CREATE_MODULE_END 102 81
CREATE_MODULE_START 102 81
CREATE_MODULE_END 103 82
CREATE_MODULE_START 103 82
CREATE_MODULE_END 103 82
CREATE_MODULE_START 103 82
CREATE_MODULE_END 103 82
CREATE_MODULE_START 103 82
CREATE_MODULE_END 103 83
CREATE_MODULE_START 103 83
CREATE_MODULE_END 104 83
PROCESS_PACKAGES_END 104 83
BUILD_NATIVE_MODULE_REGISTRY_START 104 84
BUILD_NATIVE_MODULE_REGISTRY_END 105 88
CREATE_CATALYST_INSTANCE_START 105 88
CREATE_CATALYST_INSTANCE_END 113 97
PRE_RUN_JS_BUNDLE_START 114 99
RUN_JS_BUNDLE_START 114 100
PRE_SETUP_REACT_CONTEXT_START 115 100
PRE_SETUP_REACT_CONTEXT_END 115 102
SETUP_REACT_CONTEXT_START 115 102
ATTACH_MEASURED_ROOT_VIEWS_START 116 103
ATTACH_MEASURED_ROOT_VIEWS_END 116 103
SETUP_REACT_CONTEXT_END 123 103
NATIVE_MODULE_INITIALIZE_START 123 103
INITIALIZE_MODULE_START 123 103
INITIALIZE_MODULE_END 123 103
INITIALIZE_MODULE_START 123 104
INITIALIZE_MODULE_END 123 104
INITIALIZE_MODULE_START 123 104
INITIALIZE_MODULE_END 123 104
INITIALIZE_MODULE_START 123 104
INITIALIZE_MODULE_END 123 105
INITIALIZE_MODULE_START 123 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 105
INITIALIZE_MODULE_END 124 105
INITIALIZE_MODULE_START 124 106
INITIALIZE_MODULE_END 124 106
INITIALIZE_MODULE_START 124 106
INITIALIZE_MODULE_END 124 106
INITIALIZE_MODULE_START 124 106
CREATE_MODULE_START 124 106
CREATE_UI_MANAGER_MODULE_START 124 106
CREATE_VIEW_MANAGERS_START 126 106
CREATE_VIEW_MANAGERS_END 161 106
CREATE_UI_MANAGER_MODULE_CONSTANTS_START 163 106
NATIVE_MODULE_SETUP_START 172 106
GET_CONSTANTS_START 172 107
CREATE_MODULE_START 172 107
INITIALIZE_MODULE_START 172 109
INITIALIZE_MODULE_END 172 112
CREATE_MODULE_END 172 114
CONVERT_CONSTANTS_START 187 114
CONVERT_CONSTANTS_END 187 118
GET_CONSTANTS_END 187 119
NATIVE_MODULE_SETUP_END 190 119
NATIVE_MODULE_SETUP_START 197 119
GET_CONSTANTS_START 197 119
CREATE_MODULE_START 197 119
INITIALIZE_MODULE_START 199 119
INITIALIZE_MODULE_END 199 119
CREATE_MODULE_END 199 119
CONVERT_CONSTANTS_START 200 119
CONVERT_CONSTANTS_END 200 120
GET_CONSTANTS_END 201 122
NATIVE_MODULE_SETUP_END 202 122
NATIVE_MODULE_SETUP_START 211 123
GET_CONSTANTS_START 211 123
CONVERT_CONSTANTS_START 217 124
CONVERT_CONSTANTS_END 217 124
GET_CONSTANTS_END 217 126
NATIVE_MODULE_SETUP_END 218 126
NATIVE_MODULE_SETUP_START 220 126
GET_CONSTANTS_START 220 127
CONVERT_CONSTANTS_START 220 127
CONVERT_CONSTANTS_END 220 128
GET_CONSTANTS_END 220 131
NATIVE_MODULE_SETUP_END 223 131
NATIVE_MODULE_SETUP_START 236 131
GET_CONSTANTS_START 237 135
CREATE_MODULE_START 237 135
CREATE_MODULE_END 238 135
CONVERT_CONSTANTS_START 239 135
CONVERT_CONSTANTS_END 239 136
GET_CONSTANTS_END 239 141
NATIVE_MODULE_SETUP_END 240 141
NATIVE_MODULE_SETUP_START 254 141
GET_CONSTANTS_START 254 141
CONVERT_CONSTANTS_START 255 141
CONVERT_CONSTANTS_END 255 142
GET_CONSTANTS_END 255 143
NATIVE_MODULE_SETUP_END 256 143
NATIVE_MODULE_SETUP_START 260 143
NATIVE_MODULE_SETUP_START 260 143
GET_CONSTANTS_START 260 143
CONVERT_CONSTANTS_START 260 143
CONVERT_CONSTANTS_END 261 144
GET_CONSTANTS_END 261 144
NATIVE_MODULE_SETUP_END 262 144
NATIVE_MODULE_SETUP_START 262 150
GET_CONSTANTS_START 263 151
CREATE_UI_MANAGER_MODULE_CONSTANTS_END 288 236
CREATE_UI_MANAGER_MODULE_END 295 246
INITIALIZE_MODULE_START 295 246
INITIALIZE_MODULE_END 296 247
CREATE_MODULE_END 296 247
INITIALIZE_MODULE_END 296 247
INITIALIZE_MODULE_START 296 247
INITIALIZE_MODULE_END 296 248
INITIALIZE_MODULE_START 296 248
CONVERT_CONSTANTS_START 296 248
INITIALIZE_MODULE_END 297 248
INITIALIZE_MODULE_START 297 248
INITIALIZE_MODULE_END 297 248
INITIALIZE_MODULE_START 297 248
ON_HOST_RESUME_START 325 271
ON_HOST_RESUME_END 329 274
INITIALIZE_MODULE_END 336 284
INITIALIZE_MODULE_START 336 285
INITIALIZE_MODULE_END 337 285
INITIALIZE_MODULE_START 337 285
INITIALIZE_MODULE_END 337 285
INITIALIZE_MODULE_START 337 285
INITIALIZE_MODULE_END 337 285
INITIALIZE_MODULE_START 337 285
INITIALIZE_MODULE_END 337 285
INITIALIZE_MODULE_START 338 285
INITIALIZE_MODULE_END 338 286
INITIALIZE_MODULE_START 338 286
INITIALIZE_MODULE_END 338 286
INITIALIZE_MODULE_START 338 286
INITIALIZE_MODULE_END 338 286
INITIALIZE_MODULE_START 338 286
INITIALIZE_MODULE_END 338 286
INITIALIZE_MODULE_START 338 286
INITIALIZE_MODULE_END 338 287
NATIVE_MODULE_INITIALIZE_END 338 287
CONVERT_CONSTANTS_END 345 290
GET_CONSTANTS_END 345 290
NATIVE_MODULE_SETUP_END 361 302
CREATE_REACT_CONTEXT_END 363 303
RUN_JS_BUNDLE_END 363 304
CHANGE_THREAD_PRIORITY 363 304
NATIVE_MODULE_SETUP_START 379 307
GET_CONSTANTS_START 379 307
CONVERT_CONSTANTS_START 379 307
CONVERT_CONSTANTS_END 379 307
GET_CONSTANTS_END 380 308
NATIVE_MODULE_SETUP_END 380 308
NATIVE_MODULE_SETUP_START 383 312
NATIVE_MODULE_SETUP_START 383 312
GET_CONSTANTS_START 383 313
CONVERT_CONSTANTS_START 384 313
CONVERT_CONSTANTS_END 384 313
GET_CONSTANTS_END 384 313
NATIVE_MODULE_SETUP_END 384 314
NATIVE_MODULE_SETUP_START 401 321
GET_CONSTANTS_START 401 321
CONVERT_CONSTANTS_START 402 321
CONVERT_CONSTANTS_END 402 321
GET_CONSTANTS_END 402 321
NATIVE_MODULE_SETUP_END 402 322
CONTENT_APPEARED 837 673

from hermes.

axemclion avatar axemclion commented on May 10, 2024

We would love to help. Is there a way you could create a test project that is similar to your app ? That will help us recreate and investigate this scenario better.

from hermes.

axe-fb avatar axe-fb commented on May 10, 2024

@chufengma - looks like there are some compile errors in the project - something around (ReactBuildConfig.DEBUG) not found at a bunch of places. Could you please look at them ?

from hermes.

chufengma avatar chufengma commented on May 10, 2024

@axe-fb
Sorry, I added ReactBuildConfig to the .gitignore file. Please pull and try again.

from hermes.

mhorowitz avatar mhorowitz commented on May 10, 2024

I don't know gradle very well. Is installDebug giving you the debug Hermes build, or the release build? The latter will perform better.

from hermes.

chufengma avatar chufengma commented on May 10, 2024

@mhorowitz installRelease has the same problem.

from hermes.

chufengma avatar chufengma commented on May 10, 2024

@axe-fb any updates?

from hermes.

axe-fb avatar axe-fb commented on May 10, 2024

Hey, I am still having trouble running the demo project - this time the error is around couldn't find "libun7zip.so"

Can I request you to remove all un-needed dependencies, and have a smaller repro, so that it is easier for me to run this project ?

Also, could you add a ReactMarker.addListener so that we can instrument all the other times that React Native takes ? This way, we will be able to separate React Native and Hermes concerns.

from hermes.

axe-fb avatar axe-fb commented on May 10, 2024

@chufengma - any update ? Wanted to take a look at this over the weekend.

from hermes.

chufengma avatar chufengma commented on May 10, 2024

@axemclion My problem is that when loading RN pages for the second time, Hermes is slower than JSC.

When I start my app, click the Load RN undle button, and through the ReactMaker I can see the data listed above. These data show that Hermes is faster than JSC without caching.

But when I press the return key to exit the RN page and click the Load RN bundle button again, this time using caching, Hermes is much slower than jsc, and at this time only the following logs can be seen through ReactMaker:

ON_HOST_RESUME_START null 0: 399215
ON_HOST_RESUME_END null 0: 399220
CONTENT_APPEARED CtripApp 41: 399977

from hermes.

chufengma avatar chufengma commented on May 10, 2024

After upgrading to 0.2.1, the problem is solved.
Thanks @axemclion

from hermes.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.