4 ms·
Are you speaking from experience or speculating? It's intuitive that there would be some overhead, but the amount of overhead could be anywhere from tiny to hug
by brundolf 5y ago
Are you speaking from experience or speculating? It's intuitive that there would be some overhead, but the amount of overhead could be anywhere from tiny to huge, especially given how aggressive V8 is about optimizing certain things
- guntars 5y agoA bit of both. V8 can and will optimize away closures if they can be inlined or they're unused, but it has the additional wrinkle that it's a JIT compiler and we regularly throw megabytes of compressed Javascript at it all while the user is waiting for something to happen. Not an enviable position for a compiler to be in because all analysis and optimization has to be weighed against any potential payoffs and also why I wouldn't rely on the optimizations like you could in an AOT compiled language like Rust or Haskell. Here are some trivial examples. As you increase the N, the closure containing ones get faster, except the last one (Chrome/M1). I think in real world scenarios the benefits of the optimizations are less clear cut and also the reason why V8 has a reputation for being a bit of a memory hog which is why we should give it a hand and write dumb imperative code. https://perf.link/#eyJpZCI6InN0NmQ4cTRrd20zIiwidGl0bGUiOiJDbG9zdXJlIG9wdGltaXphdGlvbiIsImJlZm9yZSI6ImNvbnN0IE4gPSAxMDA7IC8vIFRyeSBkaWZmZXJlbnQgdmFsdWVzIGhlcmVcbmNvbnN0IGRhdGEgPSBbLi4uQXJyYXkoTikua2V5cygpXVxuZnVuY3Rpb24gcHJvY2Vzcyhmbikge1xuICBkYXRhLmZvckVhY2goZm4pXG59IiwidGVzdHMiOlt7Im5hbWUiOiJUZXN0IENhc2UiLCJjb2RlIjoicHJvY2VzcyhmdW5jdGlvbiAoaSwgaikge1xuICByZXR1cm4gaSAqIDI7XG59KSIsInJ1bnMiOls2MTAwMCwyMDkwMDAsNTgwMDAsMzY3MDAwLDE1NDAwMCw0MTQwMDAsMTUwMDAsMTEzMDAwLDU0MDAwLDQ1MTAwMCwyMjAwMCw0MjUwMDAsNDIwMDAsMTQ1MDAwLDcxMDAwLDQ1MTAwMCw0NDgwMDAsNDUxMDAwLDQ1MTAwMCwxOTAwMCwxNjgwMDAsMzYyMDAwLDEwMDAsNDU2MDAwLDI0NDAwMCwxMTYwMDAsNDc2MDAwLDQ0NDAwMCw0ODkwMDAsMzQxMDAwLDEwODAwMCw0NTEwMDAsNjIwMDAsNDUxMDAwLDIwMTAwMCwyNzUwMDAsMTQ4MDAwLDM0OTAwMCw0OTkwMDAsMzY4MDAwLDQ1MDAwLDQ1MTAwMCw0MzIwMDAsMjgyMDAwLDY2MDAwLDEzMzAwMCw0NTUwMDAsMTYwMDAwLDQ1MTAwMCwzMzAwMCw1NDIwMDAsNTMyMDAwLDUwNzAwMCw0MDYwMDAsMzIxMDAwLDQ1MTAwMCw0NjkwMDAsMjI4MDAwLDQzNTAwMCwxMTcwMDAsNTY5MDAwLDQ1MTAwMCwxMDkwMDAsNDUxMDAwLDM3MTAwMCw1NzUwMDAsMzUxMDAwLDU5NTAwMCwyMzUwMDAsMjcwMDAwLDQ0MDAwLDQ1MTAwMCw4OTAwMCw4NDAwMCw0MzAwMDAsNDUxMDAwLDE3OTAwMCwxNzQwMDAsMjkwMDAsMTU2MDAwLDE1NTAwMCw0NDAwMDAsMjQxMDAwLDIwODAwMCw0OTAwMDAsNDUxMDAwLDMxMDAwLDQ4NTAwMCw0OTAwMDAsNDY3MDAwLDQ0MDAwMCw0NTEwMDAsMzc2MDAwLDQ5NzAwMCw0OTkwMDAsMjY1MDAwLDIzMzAwMCw1MTgwMDAsNTI4MDAwLDI1MDAwXSwib3BzIjozMDMwMDB9LHsibmFtZSI6IlRlc3QgQ2FzZSIsImNvZGUiOiJwcm9jZXNzKGZ1bmN0aW9uIChpLCBqKSB7XG4gIHJldHVybiBmb28oaSk7XG4gIFxuICBmdW5jdGlvbiBmb28oaSkge1xuICAgIHJldHVybiBpICogMjtcbiAgfVxufSkiLCJydW5zIjpbMTE4MDAwLDE0MDAwMCw3MDAwLDY5MDAwLDQwMDAwLDIyNjAwMCwxNDEwMDAsMTAwMCw0OTAwMCw3MjAwMCwxMjcwMDAsMTQzMDAwLDE2MzAwMCwxMDAwMCwxNjUwMDAsMTcwMDAwLDE5MTAwMCwxNDMwMDAsMTI4MDAwLDE2NzAwMCwxMzAwMDAsMjA0MDAwLDIyMDAwMCwxMjIwMDAsODMwMDAsMTgwMDAsMjAzMDAwLDE0NTAwMCwxODUwMDAsMzAwMDAsMzgwMDAsMTYxMDAwLDM1MDAwLDkzMDAwLDg3MDAwLDU5MDAwLDQ2MDAwLDcwMDAwLDIwNjAwMCwxNTEwMDAsMTYwMDAsNTYwMDAsMTU2MDAwLDEyNTAwMCwxNjAwMDAsMTQ1MDAwLDIyMTAwMCwxMzIwMDAsNDkwMDAsNzUwMDAsNTAwMDAsMTk5MDAwLDIxNzAwMCwxMzcwMDAsMTU1MDAwLDE0MzAwMCwxNDMwMDAsMTEwMDAwLDIxOTAwMCwxMDgwMDAsMjI2MDAwLDU5MDAwLDU0MDAwLDY2MDAwLDI4MDAwLDIwMjAwMCwyMDcwMDAsMjIyMDAwLDE4MTAwMCwzOTAwMCw0OTAwMCw4NzAwMCwyMjYwMDAsMjE2MDAwLDkzMDAwLDE5MDAwLDMxMDAwLDk3MDAwLDE3ODAwMCw5OTAwMCw5NDAwMCwxNTAwMDAsODYwMDAsMTQ5MDAwLDM4MDAwLDE3MTAwMCwxMTUwMDAsNDkwMDAsMjI2MDAwLDIyMDAwMCwxOTgwMDAsMTcyMDAwLDEyOTAwMCwzNzAwMCwxNjEwMDAsMTYwMDAwLDEwMDAsMjI2MDAwLDIyNDAwMCwyMTgwMDBdLCJvcHMiOjEyMzc1MH0seyJuYW1lIjoiVGVzdCBDYXNlIiwiY29kZSI6InByb2Nlc3MoZnVuY3Rpb24gKGksIGopIHtcbiAgcmV0dXJuIGZvbygpO1xuICBcbiAgZnVuY3Rpb24gZm9vKCkge1xuICAgIHJldHVybiBpICogMjtcbiAgfVxufSkiLCJydW5zIjpbOTIwMDAsMTAwMCwxNDgwMDAsMjIwMDAsMTAwMCw2MDAwMCwxNjAwMCwxNTEwMDAsMTUyMDAwLDk3MDAwLDE1NDAwMCw0MDAwMCwxNzMwMDAsNDkwMDAsMjMwMDAsNjIwMDAsMTEwMDAwLDYxMDAwLDE1MTAwMCwxMDgwMDAsOTgwMDAsNDcwMDAsMTM1MDAwLDgwMDAsNzYwMDAsNTMwMDAsMTIyMDAwLDUwMDAsMTY1MDAwLDE3NTAwMCwxODAwMCwxMDMwMDAsMTYxMDAwLDEzMDAwLDExODAwMCw3ODAwMCwzNzAwMCwxNTEwMDAsMTEyMDAwLDE5MDAwLDE3OTAwMCw0MjAwMCwxNTEwMDAsNjgwMDAsMTUxMDAwLDEwMjAwMCwxNzUwMDAsODAwMCwxNTEwMDAsNTUwMDAsMjUwMDAsMTUwMDAwLDEzNTAwMCwyMTAwMCw3MjAwMCw5ODAwMCwxNDgwMDAsMTUxMDAwLDE1MTAwMCwxMjQwMDAsNzUwMDAsMTMyMDAwLDEyODAwMCwzMTAwMCwxNTAwMCwxMTcwMDAsMTcyMDAwLDE1MTAwMCwxNjkwMDAsMTUzMDAwLDY3MDAwLDE1MTAwMCwxNTEwMDAsMTUwMDAsMTUxMDAwLDkzMDAwLDY3MDAwLDEzNjAwMCwxNDAwMCwxMTEwMDAsMTAyMDAwLDEzMDAwMCwxMDAwLDcwMDAwLDM2MDAwLDQxMDAwLDU5MDAwLDgwMDAsNDEwMDAsMTI4MDAwLDcyMDAwLDc0MDAwLDE1NzAwMCwxNzEwMDAsMTU1MDAwLDYwMDAwLDMxMDAwLDMxMDAwLDcyMDAwLDE1MTAwMF0sIm9wcyI6OTIxMTB9LHsibmFtZSI6IlRlc3QgQ2FzZSIsImNvZGUiOiJsZXQgYmFyID0gdW5kZWZpbmVkO1xucHJvY2VzcyhmdW5jdGlvbiAoaSwgaikge1xuICAvLyBPaCBub2VzLCBpdCBlc2NhcGVzIVxuICBiYXIgPSBmdW5jdGlvbiBmb28oKSB7XG4gICAgcmV0dXJuIGkgKiAyO1xuICB9XG4gIHJldHVybiBiYXIoKTtcbn0pXG5iYXIgPSB1bmRlZmluZWQ7IiwicnVucyI6WzkzMDAwLDgxMDAwLDI1MDAwLDQ1MDAwLDUyMDAwLDc0MDAwLDQwMDAwLDg0MDAwLDE0MjAwMCw3NDAwMCw2MDAwMCw5NDAwMCwxNDUwMDAsMTQ4MDAwLDE2MTAwMCwxNTIwMDAsNTAwMCwzMDAwMCwxODEwMDAsNDkwMDAsNTUwMDAsMTU1MDAwLDExNjAwMCwxMjYwMDAsMTAxMDAwLDgwMDAsNzQwMDAsMTM3MDAwLDQ2MDAwLDIxMDAwLDg2MDAwLDExMTAwMCwyNjAwMCw5MDAwMCwxMTkwMDAsNDUwMDAsMTUxMDAwLDU2MDAwLDExOTAwMCwxODEwMDAsNTIwMDAsNzQwMDAsMjUwMDAsMjMwMDAsNTQwMDAsMzkwMDAsOTUwMDAsNTcwMDAsNDYwMDAsNDQwMDAsMTM4MDAwLDEyMjAwMCw2MDAwLDY1MDAwLDExOTAwMCwzMTAwMCw1NjAwMCwxNjIwMDAsMTMxMDAwLDEzOTAwMCw5NTAwMCwxMjAwMDAsMTM2MDAwLDExMTAwMCwxMzAwMDAsMTAwMCwxMTgwMDAsMzAwMDAsNjgwMDAsMTA0MDAwLDc4MDAwLDEwODAwMCwxNDgwMDAsOTUwMDAsODkwMDAsNjQwMDAsMjIwMDAsMzEwMDAsMjAwMDAsMTgwMDAsMTAwMCwxODEwMDAsNjYwMDAsMzcwMDAsMTYwMDAsNzQwMDAsNjEwMDAsNzAwMCwxMjEwMDAsNzQwMDAsNjIwMDAsMTE3MDAwLDQ0MDAwLDUzMDAwLDEwNzAwMCwyNjAwMCw1OTAwMCw4MDAwMCwxMDAwLDMyMDAwXSwib3BzIjo3ODQxMH1dLCJ1cGRhdGVkIjoiMjAyMS0wOS0yMFQwOTozNjowMy41NjJaIn0%3D https://perf.link/#eyJpZCI6InN0NmQ4cTRrd20zIiwidGl0bGUiOiJDb...