6 ms·
An overview of V8
- saagarjha 6y ago> The higher the language is, the slower it is. That’s why C and C++ are so much faster, they’re very close to the machine code language: the assembly language. Wait until you see Rust ;) > That means that new properties can be added, replaced and removed during execution time. This is not possible with languages like Java, for example, in which everything (classes, method, objects and variables) must be defined before program execution and can’t be dynamically changed after the app starts. Nit: they can; this is just not normally done > At the time of writing this article, the GitHub repo counts 15.3k stars and 2.9k forks. Note that V8 is developed mostly outside of GitHub.
- microcolonel 6y ago> Wait until you see Rust Rust is still just a really nice macro assembler.
- lachlan-sneff 6y agoErr, what?
- entha_saava 6y agoLike every compiled language :/
- lisper 6y ago> Wait until you see Rust ;) Or Common Lisp. Or OCaml. Or Haskell. Or Dylan. Or...
- adamnemecek 6y agoThose are all higher languages however they are slow.
- lisper 6y agoNo, they aren't. That's the whole point. This idea that high level languages are slow is a pernicious myth.
- adamnemecek 6y agoHow can say lisp, a language that touches the heap profusely, be faster than c or rust?
- uryga 6y agoi've heard a lot about SBCL and the efficient machine code it generates. i'm guessing a lot of the heap stuff can be optimized away if the code is written right (e.g. via escape analysis or eliminating intermediate values). though i'm guessing that if you really want the best performance, you just end up writing C/Rust with a lot of parentheses :)
- lisper 6y agoYou have to compare apples and apples. Lisp can "touch the heap profusely" but it doesn't have to. You can trade off programming convenience for heap touching. But GC technology has come a very long way, and GC's optimized for Lisp's particular pattern of heap touching have become exceptionally good. Such technology is now standard equipment in EVERY language EXCEPT C and C++, and even C and C++ have them as bolt-on accessories. For some kinds of tasks, Lisp can actually be faster than C or C++. This is why, for example, the Orbitz search engine was written in Common Lisp.
- adamnemecek 6y agoOK can I see some numbers?
- lisper 6y agoSure. What kind of numbers would you like to see?
- singlow 6y agoAt what point did deep dive come to mean high-level overview?
- bialpio 6y agoCame here to say the same thing, the title is very misleading. The article even uses those words in the summary: "The goal was to clarify a bit on V8’s structural details (...)", "(...) But these are pretty much the core concepts. (...)". EDIT: added one more quote.
- jerrysievert 6y agoI kept reading the overview trying to find any place where it took even a shallow dive, but it never did. which is a shame, since there's a ton of interesting parts inside of v8.
- dang 6y agoOk, we've made the title resurface and be an overview above.
- cardiffspaceman 6y agoGranted, it's higher level than I could have comprehended or desired, but it's lower level than some overviews I can picture. I think there could be more refinement to the article. The GC does not get rid of "dead or old" objects. It gets rid of dead (unused) objects, regardless of age. The part on inline caching doesn't really explain what happens when the cached method is not the right one. These things could be edited without changing the level of detail very much.
- wwarner 6y agoThis talk between Lars Bak (creator of V8) and Eric Meijer from 2009 is really good. It covers the same material as the article, with a little be more depth. https://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine https://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-...
- CodeMage 6y ago> However, V8 creates an environment of a single thread for each of JavaScript’s execution context. The rest is kept under its control. Maybe it's because I'm not a native speaker, but to me this sounds like they're saying the V8 creates one thread per execution context. I've been working with V8 for months now and this doesn't make any sense to me. Can someone clarify whether I simply misunderstood the phrasing?
- foota 6y agoThe phrasing is definitely off. It's saying "V8 creates a single thread for all of JavaScript's execution contexts"
- pretendscholar 6y agoMaybe it could be rephrased to: >However, V8 uses an environment of a single thread for all of Javascript's execution contexts.
- deleted 6y ago[deleted]
- SuaveSteve 6y agoI think V8 is going to cause JS to overtake Python JS has become a general scripting language thanks to Node and friends. So you have it with an interpreter that has had so much effort from veterans in JIT VMs versus Python. The writing is on the wall.
- greggman3 6y agoLately, more often then not, when I do a test of javascript perf v8 is at the bottom of performance compared to Spidermonkey and Nitro (or whatever the name of Safari's engine is). And I'm not talking a few percent. I'm talking 2x to 20x. Not every test, but enough that at least on micro benchmarks v8 seems to be the at the bottom at the moment which is disappointing. It's possible on more common use cases they are closer on perf.