Franziska Hinkelmann: JavaScript engines - how do they even? | JSConf EU

  Рет қаралды 205,291

JSConf

JSConf

Күн бұрын

Пікірлер: 111
@964tractorboy
@964tractorboy 7 жыл бұрын
An excellent way to spend 25 minutes. Thank you!
@sidheshwartiwari9834
@sidheshwartiwari9834 4 жыл бұрын
Indeed
@serhiikrechko
@serhiikrechko 2 жыл бұрын
This is very useful for understanding javascript internals. Thank you Franziska for the clear talk!👏
@armanb9778
@armanb9778 7 жыл бұрын
Very interesting stuff. It's always nice to know a little more about what goes on under the hood.
@crabsynth3480
@crabsynth3480 6 жыл бұрын
Awesome Presentation !!! This definitely Demystified some of the Inner workings of V8 for me. Kudos !
@srcmake
@srcmake 5 жыл бұрын
Amazing presentation. It explained everything really well and even taught me a few tricks.
@peterbarraud5254
@peterbarraud5254 7 жыл бұрын
Thanks much Franziska. Would love to see more of such stuff. Help us work better with the JavaScript engine
@vinothkumarv9722
@vinothkumarv9722 4 жыл бұрын
An excellent way to spend 25 minutes. Thank you! really amazing :)
@rakhymbeksagyn2835
@rakhymbeksagyn2835 Ай бұрын
I didn't get a few things here, I hope someone smart is gonna help me with that: 1. at 16:00 she shows an assembly code, but as I understand and as she mentioned before TurboFan generates machine code eventually, not an assembly? 2. at 22:40 author says about benchmarks and that right-side code (ES6) is a lot slower than the left-side code (ES5 equivalent), but later at 23:40 author says that -"we can use ES6 feature without having to worry about perfomance". Why first she said ES6 is slower, but later it is okay and do not worry? I hope I just misunderstood.
@Pwndrift
@Pwndrift 21 күн бұрын
assembly code == machine code
@FunctionGermany
@FunctionGermany 2 жыл бұрын
cool talk, i learned a lot :) i wish there were more accessible talks like this that talk about JS performance
@matthijshebly
@matthijshebly 7 жыл бұрын
Started out a bit slow, but then this talk became very interesting indeed, and this will help us write better, faster code. Awesome!
@shubhamagrawal5784
@shubhamagrawal5784 6 жыл бұрын
No wonder they names it V8, they made it in germany.
@dealloc
@dealloc 5 жыл бұрын
Actually it was initially created in Denmark by Lars Bak.
@vasafeasdas6183
@vasafeasdas6183 5 жыл бұрын
@@dealloc #totallyNotRelated
@pongstr
@pongstr 5 жыл бұрын
@@dealloc oh wow, really lol
@jackluo9347
@jackluo9347 4 жыл бұрын
why? i cant get it.
@landryplacid4065
@landryplacid4065 4 жыл бұрын
lol.... v8 sounds like a german car. Had to be a high performance Car, the V8 is actually a highly optimize car for carrying js code to the os and machine code(running js code). Germans and engine. nice synonym.
@belrestro
@belrestro 6 жыл бұрын
Simple but useful presentation
@bouhannacheabdallah
@bouhannacheabdallah 5 жыл бұрын
this course should one of the mandatory courses that a developer should follow to make the code work in very efficient way and give best performance and hardware management .
@snjvthakur24
@snjvthakur24 3 ай бұрын
Lots of knowledgeable insights thanks
@ctRonIsaac
@ctRonIsaac 6 жыл бұрын
I love listening to smart people. - thanks!!
@doug2279
@doug2279 4 жыл бұрын
can the engine not be modified to take typescript raw and use the types for increased speed??
@JM14062010
@JM14062010 4 жыл бұрын
Interesting stuff, thanks for the explaination!
@dayumnson9769
@dayumnson9769 3 жыл бұрын
great talk! 21:00 is this the reason for the optional variables : testVar?: number etc.. in typescript? will be checking to what it will becompiled now! :D
@reiskoryphae
@reiskoryphae 2 жыл бұрын
What happened after your test?
@GauthamBangalore
@GauthamBangalore 6 жыл бұрын
Very nice video. At 22:15, isn't the "let" keyword part of ES6 and not ES5?
@avimehenwal
@avimehenwal 4 жыл бұрын
you are right. let is ES6 specification
@urgn
@urgn 2 жыл бұрын
Is there a record of tech talk by her co-worker Maria speaking about JavaScript parsing she mentioned on 11:30 ?
@urgn
@urgn 2 жыл бұрын
kzbin.info/www/bejne/fJian5yKorOBgsk
@derjansan9564
@derjansan9564 2 жыл бұрын
Some time ago the Chrom profiler would show you if a function was deoptimized. Unformtunately this "performance debugging" information is no longer available in newer versions of Chrome.
@kasimsche2812
@kasimsche2812 4 жыл бұрын
Thank you so much for sharing such a great information. Very informative 25 minutes👍🏻😇🙌🏻🙋🏻‍♂️
@carlosbenavides670
@carlosbenavides670 3 жыл бұрын
Brilliant talk, Thanks for sharing
@u0000-u2x
@u0000-u2x 4 жыл бұрын
Excellent presentation
@theshermantanker7043
@theshermantanker7043 4 жыл бұрын
ES6 and ES.Next are really far apart by now, everyone's having a hard time keeping up :/ Now we have ES11!!!
@TheAxeForgetsTheTreeRemembers
@TheAxeForgetsTheTreeRemembers 7 жыл бұрын
The intro jingle is cool!
7 жыл бұрын
is the intro supposed to sound like the zelda theme?
@johannes-vollmer
@johannes-vollmer 7 жыл бұрын
C++ has 'auto' which works similar to 'var' in Js. But, exactly as in Js, you cannot ignore the type. Even assignment does different things, depending on the type of the variable. In Js, primitives will be copied but objects will be a copy of reference, which then refers to the same object.
@-taz-
@-taz- 5 жыл бұрын
In C++11, the "auto" keyword was redefined to be a placeholder for a single type deduced from their initializer. For example, "auto x = 42;" is identical to "int x = 42;". Likewise, "auto x = true;" would mean "bool x = true;". The "auto" variable is still bound *permanently* to a type. That's completely different from var, which is a variant. A variant's type can change during its lifetime. C++17 has std::any and std::variant, which are more like var: godbolt.org/z/4926dx
@mustafwm
@mustafwm 7 жыл бұрын
Excellent talk. Thank you!
@anonmityslayer
@anonmityslayer 3 ай бұрын
I didn't get "Baseline compiler is an interpreter" I am beginner and as per my knowledge interpretation is different than compilation i guess ??
@ben4d85
@ben4d85 6 жыл бұрын
Sehr interessant, Dankeschön! Would you agree that the statement "From a compiler's perspective, the best thing we can do is to write code that looks like it is statically typed", can be used as an argument in favour of TypeScript, which as I understand it naturally encourages us to write code that looks like it is statically typed. Hence, does writing our code using TypeScript make it more likely that the resulting JavaScript code can be optimised in a way that increases performance? Using that argument, can it therefore be inferred that "using TypeScript makes our apps faster"?
@f_hinkel
@f_hinkel 6 жыл бұрын
Definitely, also, because TypeScript is great! The "types" in TypeScript are not necessarily the same "types" for V8, but by using TS you're getting automatically more statically types nature, so it's usually better for the engine's speculative optimizations.
@prashantdhameja5778
@prashantdhameja5778 6 жыл бұрын
Hence even after being dynamic type language, the performance increases by statically typing. Is this same under the hood of python?
@-taz-
@-taz- 5 жыл бұрын
The question is: does adding types help us understand the program better, or does it just add noise? Having used around 30 languages, including Javascript since 1996, TypeScript a bit, and a typed version of Javascript for Flash (which I would categorize as the same language in all these cases), I think the type information is mostly useless noise. I also write a lot of C++ (since 1994). It seems to always be moving more toward generics where types are inferred or deduced, so advanced C++ code is extremely noisy, sometimes becoming impossible to understand. All that extra noise merely says "do whatever you want whenever you need to, compiler." That's exactly what JS does ALWAYS and with ZERO noise.
@Elite7555
@Elite7555 5 жыл бұрын
Type refinement in JavaScript is a very cheap operation but it allows the compiler to optimize parts of the code it can be certain about (look at asm.js). Variables not changing their types certainly does help optimization. Also object literals having the same "shape" does help. But what doesn't help are "nullables" (not always the same type), tuples (don't really exist in JS) or tagged unions (while a nice feature of TS, for V8 it would actually be impossible).
@avimehenwal
@avimehenwal 4 жыл бұрын
Sehr nett Frage :) Theorytically you are right on point.If we discard the indirection stage added to first compile TS to JS, the generated JS is more optimized and hence might run slightly faster. To my observations the performance gains are considerably small for a mid sized app. A con is it increases the build time marginally
@MrAlithom39
@MrAlithom39 3 жыл бұрын
super interesting. great presentation
@prashantdhameja5778
@prashantdhameja5778 6 жыл бұрын
Thanks a lot😄 this was a great video.
@code_cutter
@code_cutter 3 жыл бұрын
16'33": "this is the optimized code that was generated after we have ..." What does "" mean? Does it mean that the script file contains a similar code pattern repeatedly, or that you have pressed F5 a few times?
@amoshnin
@amoshnin 3 жыл бұрын
Amazing talk! Thanks!
@yash9944
@yash9944 6 жыл бұрын
Awesome explanation.
@PradeepSamuelRocks
@PradeepSamuelRocks 5 жыл бұрын
Interesting !!! Nice explanation ...thank you !!
@BooksWeCanRead
@BooksWeCanRead 6 ай бұрын
Awesome! 👏👏
@jaysistar2711
@jaysistar2711 6 жыл бұрын
Intro was a variation of Zelda fountian/file select music.
@-taz-
@-taz- 5 жыл бұрын
Also the beginning of Scott Pilgrim.
@jschapir
@jschapir 7 жыл бұрын
Can someone help me identify if two types are the same?! I want to make use of "hot functions". {a: [obj1]} vs {a:[obj2]}?
@oliverford5367
@oliverford5367 7 жыл бұрын
Not the same as obj1 could be very different from obj2
@eggwaffle
@eggwaffle 6 жыл бұрын
they are the same type
@mortsnoody8639
@mortsnoody8639 7 жыл бұрын
Thanks for the presentation. I'm in a bit over my head, but I was able to follow along. I am uncertain about one point, though. Given two objects {x:"a string", y:5} and {x:"another string", y:7}, would they be of the same type, despite differing string lengths? Is the string value of obj.x stored by reference so that the location of obj.y is always the same, relative to the object?
@gnackattack
@gnackattack 7 жыл бұрын
Yes they would be considered to be the same type by the compiler.
@oliverford5367
@oliverford5367 7 жыл бұрын
Strings are the same type. The length of a string is part of the type. Strings in js and most languages are a length/address pair.
@avimehenwal
@avimehenwal 4 жыл бұрын
I maybe late for the party but, according the ECMA-262 3rd Edition Specification, each character represents a single 16-bit unit of UTF-16 text:. Hence both obj will have same types
@oliverford5367
@oliverford5367 7 жыл бұрын
If websites provided v8 bytecode instead of js to skip parsing, how much quicker would it be?
@eggwaffle
@eggwaffle 6 жыл бұрын
Quicker x0 when it's ran on another engine and crashes
@crabsynth3480
@crabsynth3480 6 жыл бұрын
i dont claim to understand it but i've heard of webassembly recently... which might be the missing interface required in this case... Good Discussion.
@Sese63728
@Sese63728 7 жыл бұрын
I'd love to study this in more depth. Anyone can recommend some book?
@bytler4518
@bytler4518 7 жыл бұрын
would also like to know.
@oliverford5367
@oliverford5367 7 жыл бұрын
She has a medium post on v8 that includes references to books etc.
@Cognitoman
@Cognitoman 5 жыл бұрын
I like how they changed the names of the processing of the V8 egine to stuff like " ignition" and "turbo fan". its easier to remember because its like a car engine now.
@falfonsogo
@falfonsogo 6 жыл бұрын
Very nice ... interesting .... I code while I listen .... nice
@eyupgurel916
@eyupgurel916 7 жыл бұрын
Excellent subject matter
@bobbyaldol
@bobbyaldol 7 жыл бұрын
Why doesn't --print-opt-code work for me?
@avimehenwal
@avimehenwal 4 жыл бұрын
might be because Optimizing Compiler has nothing to optimize and everything is handled by baseline compiler. Happens a lot with short non-repetitive js code
@vishalverma5280
@vishalverma5280 2 жыл бұрын
finally some one to explain the core to an extent .. time consuming though.
@misterrodger
@misterrodger 3 жыл бұрын
So wait...do they call it fau 8?
@hp354
@hp354 5 жыл бұрын
Thank you for sharing !!
@szym1
@szym1 7 жыл бұрын
the first flag and the third flag does not work with chrome
@MecchaKakkoi
@MecchaKakkoi 7 жыл бұрын
Great talk.
@kirakira8174
@kirakira8174 3 жыл бұрын
amazing, thank you!! :)
@blackcoder2510
@blackcoder2510 Ай бұрын
Js engine need to be multiple threaded and have option of GC
@negasonicteenagewarhead
@negasonicteenagewarhead Жыл бұрын
I love them V8s
@schwanensee4488
@schwanensee4488 4 жыл бұрын
I'm not in in development jet, more than webdesgin at least, but it what intresting to here because i will learn javascript in neaer future.
@randomnobody660
@randomnobody660 3 жыл бұрын
While I'm always amazed at compiler black magic, I'm also confused at why they are even required. I get dynamic types are great for prototyping, that programmer time > cpu time n all such. Sometimes thou I wish we had access stricter typing, pointers, immovable class/struct etc just as an option. Just make it a separate mode or something. Maybe if you set a flag to true, you can no longer dynamically add properties or at least you will get some sort of warning. In exchange you are guaranteed the faster code.
@nueythepyasuwan
@nueythepyasuwan 9 ай бұрын
Cool thank you
@maggie5350
@maggie5350 3 жыл бұрын
Today, if a programmer wants to write JS code with high performance, he/she needs to be more under the hood, to be more specific, more about hardware. Although the V8 engine is just a virtual machine, it essentially was designed by people with a good understanding of hardware.
@buddhaburrito
@buddhaburrito 3 жыл бұрын
8;30 is where the beef is at
@kalindiashtikar1886
@kalindiashtikar1886 3 жыл бұрын
Thank you mam
@hemantkumarsingh9204
@hemantkumarsingh9204 5 жыл бұрын
loved it...
@abderahmaneaoufi
@abderahmaneaoufi 2 жыл бұрын
I LOVE JAVASCRIPT
@dan9948
@dan9948 3 жыл бұрын
I don't like the encouragement to write more statically typed code to make up for where the JIT is not good at optimizing the dynamically typed language is made for. How about making the engine better at doing that for the programmer, so the programmer does not have to do the engine's job?
@bunny_rabbit5753
@bunny_rabbit5753 4 жыл бұрын
Cool T Shirt😘
@prateeksurana2584
@prateeksurana2584 3 жыл бұрын
And that's how TypeScript was invented
@balakrishnan.m-m8q
@balakrishnan.m-m8q Жыл бұрын
Thanks for gift
@sboontham
@sboontham 5 жыл бұрын
Just like we coding DB III program long time ago.
@CASLOAcademy
@CASLOAcademy Жыл бұрын
good shit
@ult1873
@ult1873 3 жыл бұрын
why does every talk here have that one awkward meme at the start?????
@adityamishra7711
@adityamishra7711 Ай бұрын
well, now as you may see, i was here..........
@ultimatewarriorfrieza275
@ultimatewarriorfrieza275 2 жыл бұрын
If you represent the same type of objects by having all the abcd properties for everything is like highlighting the advantages of a class based programming and emphasizing the cons of a dynamically type language, isn't it? lol
@Maindev1994
@Maindev1994 2 жыл бұрын
ajalas que pro
@damonesswu8254
@damonesswu8254 2 жыл бұрын
duktape vs jerryscript
@nayemopi
@nayemopi 2 жыл бұрын
😍
@anonmityslayer
@anonmityslayer 3 ай бұрын
Noice
@moussaibrahem9
@moussaibrahem9 2 жыл бұрын
Bun is coming
@rafaqathussain7259
@rafaqathussain7259 5 жыл бұрын
Make python plz
@vasafeasdas6183
@vasafeasdas6183 5 жыл бұрын
I should learn assembly, not JS
@noshadowofadoubt1124
@noshadowofadoubt1124 2 жыл бұрын
Great Smart Women !
@raulmarindev
@raulmarindev 3 жыл бұрын
Typescript to the rescue
小丑教训坏蛋 #小丑 #天使 #shorts
00:49
好人小丑
Рет қаралды 54 МЛН
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 42 МЛН
Kruno: How browsers work | JSUnconf 2017
20:06
JSConf
Рет қаралды 87 М.
Lin Clark: A Cartoon Intro to WebAssembly | JSConf EU
29:41
Blazingly Fast JavaScript with ThePrimeagen | Preview
18:22
Frontend Masters
Рет қаралды 108 М.
JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue
12:35
Node's Event Loop From the Inside Out by Sam Roberts, IBM
23:02
GothamGo 2018 - Things in Go I Never Use by Mat Ryer
24:53
Nation Confrences
Рет қаралды 86 М.