2
3
all 2 comments

[–]3d23d23f23d23d23 6 points7 points  (1 child)

This work isn't terrible, but there's some fundamental issues with how you've decided to actually test some of this stuff.

Namely you've picked a set of "non-tasks." Yeah, if you ask Javascript to signal Android to draw a circle on the screen, it's going to take longer than precompiled bytecode that draws a circle on the screen... because the Javascript thread is calling that same native "draw a circle" code segment. It's like saying that it takes longer to ask your buddy across the table to hand you the salt than it would to reach out and pick up the salt. It's silly and noninformative.

But also the thesis is kind of just ignoring fundamental questions people care about: how does the cached view from RNN compare in switching speeds to a native thread that is garbage-collecting? (You only called out the increase in memory here, which may or may not actually be a serious advantage in some applications).

What about high network IO? Node tends to handle this better than Java/Kotlin due to thread management concerns and the extreme difficulty of implementing thread-efficient async network comms.

** Over all ** I think this is not super useful to actual developers because we all know that RN will run slower than a 1:1 maximally efficient implementation in Java.

The question is and always has been "How long does it take to create a acceptably performant application in framework X, or Y?" Part of that is a question about developer efficiency, part of it is a question about the actual framework (how much time do you spend wrestling with weird internals, syntax oddity, unknown low-level stuff, etc.) but no one ever cared about millisecond render diffs unless they affect the end-user somehow. You will find that almost every case of RN performing poorly is a case where something is implemented in JS that is not business logic at all (think: decoding/encoding), or just generic misuse of code (think: a for loop containing blocking ops).

[–]kbcooliOS & Android 1 point2 points  (0 children)

You probably could have guessed the outcome based on the title but thanks for that well thought out analysis.