Тёмный

How I Made JavaScript BLAZINGLY FAST 

ThePrimeagen
Подписаться 362 тыс.
Просмотров 211 тыс.
50% 1

I did a fun experiment to expose the cost of GC
Links
V8 v8.dev/blog/high-performance-...
Code: github.com/ThePrimeagen/yt/bl...
Twitch
Everything is built live on twitch
Twitch : bit.ly/3xhFO3E
Discord: discord.gg/ThePrimeagen
Spotify DevHour: open.spotify.com/show/4MLaDrQ...
Editor
All my videos are edited by Flip. Give him a follow! / flipmediaprod He is also open to do more editing, so slide deeeeeeeeep into his dms.
Join this channel to get access to perks:
/ @theprimeagen
Links
Linode: linode.com/prime
/ discord
Twitch: / theprimeagen
Insta: / theprimeagen
Twitter: / theprimeagen
VimRC & i3: github.com/ThePrimeagen/.dotf...
Keyboard 15% off bit.ly/Prime360 USE CODE PRIME360
#vim #programming #softwareengineering

Наука

Опубликовано:

 

16 окт 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 448   
@uhN0id
@uhN0id Год назад
I'm pretty sure that Prime is talking about my code when he says garbage collection.
@paulheisner
@paulheisner Год назад
Holy sh**, i had to laugh out loud reading this
@ayoub.k
@ayoub.k Год назад
Your comment wins.
@asedtf
@asedtf Год назад
My collection of garbage is certainly slow. This statement is true in every possible interpretation
@ThePrimeagen
@ThePrimeagen Год назад
its beautiful but its garbage
@uhN0id
@uhN0id Год назад
@@ThePrimeagen I thought it was what's on the inner scope that counts :(
@artifishul
@artifishul Год назад
Big fan of the more technical stuff like this
@stasgavrylov
@stasgavrylov Год назад
Man, you should definitely make more of those deep-dives, you have so much knowledge to share. If you could also drop a link to this code in the description, that'd be really useful. Thanks for the great tip!
@ThePrimeagen
@ThePrimeagen Год назад
i will! for you, here you go github.com/ThePrimeagen/yt/blob/master/is-javascript-slow/test.js
@stasgavrylov
@stasgavrylov Год назад
@@ThePrimeagen 👈😎👈
@Draxen
@Draxen Год назад
Agreed, straight 🔥
@HuxleysShaggyDog
@HuxleysShaggyDog 11 месяцев назад
Based
@Psy45Kai
@Psy45Kai Год назад
Love auch JS deep dives. I am myself a C++ and now (partially because of you) Rust developer and like this performance stuff 😁 Since I just start using JS I like listening to JS ninjas like you are. This is much more interesting than most low level JS stuff on YT 😁 Thanks for your high octane videos ✌️
@benjaminughegbe4255
@benjaminughegbe4255 Год назад
hey, please what's JS ninja? did he mention it in this video? ask cos I may not watch till the end 😬
@jesusgonzalez5709
@jesusgonzalez5709 Год назад
100% agree
@ThePrimeagen
@ThePrimeagen Год назад
just trying to have a bit of fun out here
@pchick
@pchick Год назад
@@benjaminughegbe4255 it just means proficient with js
@benjaminughegbe4255
@benjaminughegbe4255 Год назад
@@pchick oh, thanks a lot
@cal3461
@cal3461 Год назад
Awesome timing. Just learned about how Rust manages memory today so this will be a nice contrast!
@blackfrog1534
@blackfrog1534 Год назад
YES Primeee back at it with the technical stuff. For me this is your best type of content and the streams that lead up to it are so much fun!
@ThePrimeagen
@ThePrimeagen Год назад
yaya! I do love the technical content and i think its super fun.
@scottiedoesno
@scottiedoesno Год назад
Really enjoy the technical stuff! As someone who has more than a casual relationship with JS, these kind of engaging technical analyses are super useful on a very regular basis
@jordanasghar6419
@jordanasghar6419 Год назад
My favorite type of videos from you! I use JS all the time and see the spread pattern constantly, never thought to consider the GC impact under the hood but makes total sense!
@alexandersemionov5790
@alexandersemionov5790 Год назад
I love it. Object pool is quite a popular technique in game engines to reuse npcs and so on. Please continue with this format
@lisyr4918
@lisyr4918 Год назад
I am a junior dev, but even understanding only about 50% / 60% I am learning so much watching your videos, thanks for this incredible quality videos!
@SiisKolkytEuroo
@SiisKolkytEuroo Год назад
Is there something specific you did not understand about the video, I'd be happy to explain
@odorlessflavorless
@odorlessflavorless 9 месяцев назад
@@SiisKolkytEuroo I did not even the problem statement here. Is it about tweaking the code in a way the V8 engine does not run garbage collector ?
@SiisKolkytEuroo
@SiisKolkytEuroo 9 месяцев назад
@@odorlessflavorless yeah I suppose you could say that. Or, writing your code in a way that doesn't do as many allocations and doesn't leave much garbage behind
@vin1208
@vin1208 8 месяцев назад
@@SiisKolkytEuroo bro tbh i did not understand the first function, the closure i do not understand it, never used it in real life in what case scenario would that function be used so from that i barely understood the whole video, i dont even know class components and what was he trying to do with all that props1 props2 props3 and the vocalbulary he used i didnt understand most of it, im self taught so i only understand code but not terminology.
@Zzznmop
@Zzznmop Год назад
It’s crazy that I’ve watched your channel on twitch and RU-vid for years and learn something new every time I listen Thank you!
@jamesfoley4426
@jamesfoley4426 Год назад
I really enjoyed this video and yes I would like to see more content where you do a code review just like this. RU-vid is filled with junior developer content. It is hard as an intermediate to find content that improves your skill set/skill level. I think with your knowledge base your technical review of code is extremely beneficial.
@aaronroethe1010
@aaronroethe1010 Год назад
love all your videos, keep up the technical side and I love your Go content!
@82TheKnocKY
@82TheKnocKY Год назад
I love this! This is the data based advanced stuff that no one else on RU-vid really does. With realworld fang experience to back it too!
@chrishamilton1728
@chrishamilton1728 Год назад
I'd love to see a conversation between you and the React devs about the "Immutable" philosophy. So many new objects, every single render, it hurts...
@ThePrimeagen
@ThePrimeagen Год назад
probably could squeeze quite a bit out on the server if they stopped
@chrishamilton1728
@chrishamilton1728 Год назад
​@@ThePrimeagen React's whole change detection system is built around shallow diffing two objects sooooo..... But it's not a design flaw, because it makes your code *_PURE_* 😇🙏 pure garbage
@marcusrehn6915
@marcusrehn6915 Год назад
​@@chrishamilton1728 Immutability is a sound concept that is. There are a number of ways to implement it in a far more performant manner. Sadly, javascript arrays and objects have pretty much none of the characteristics needed. There are libraries like Immutable JS, but that also falls short because no library is going to pass us an immutable list, for example after a database query. So you would have to make at least one copy of the array when converting to Immutable. How about we just skip JS on the server, at least where performance matters?
@pm1783
@pm1783 Год назад
@@marcusrehn6915 agreed
@danielchettiar5670
@danielchettiar5670 Год назад
@@chrishamilton1728 Imo vdom is unnecessary with modern hardware. If they took that out, react dx would be much better and they also wouldn't have to do the diffing. But that's a monumental change that's never gonna happen. Good that we have other great open source ui libs
@klegsy
@klegsy Год назад
These are the primeagen videos I enjoy the most! Keep them coming
@krombopuloslincler4849
@krombopuloslincler4849 Год назад
Please do these type of videos more. Love it
@daveisradicle
@daveisradicle Год назад
Great video, super smart way of showing off GC operations and how to work around them.
@filipecrosk
@filipecrosk Год назад
Mna, these kind of content is all I need!! Thanks for sharing. Performance, performance, performance!!! Learn how to dig inside the runner and understand what parts of your code is taking longer and then debug to get it better is what everyone should learn. I know it's advanced for a lot of people, but learn how to debug is an art that we all should give more attention to. Again, I'm 1000% for more content like this!!!
@MrBaudin
@MrBaudin Год назад
It was a great video, i would like to see more content like this. My opinion on the vid was that the setup could be shorter, the explanation of the code a bit longer and the ending was perfect! Performance is a difficult topic and these videos really help explain your thought process, please make more of them.
@conradbuck2414
@conradbuck2414 Год назад
I wrote a streaming regex engine and it hammers the GC pretty hard because it needs to create an object for each state it passes through, and on any real text and expression it passes through a lot. I studied its perf because I thought I'd have to pool the state objects, but instead profiling showed that I was only spending ~20% of my time doing GCs. That's because v8's generational garbage collector is optimized for the collection of objects that are small, short-lived, and have a common structure/shape. Engineers should not shy away from using those kinds of objects!
@typeer
@typeer Год назад
Man I'm so grateful for you communicating this stuff in 10 min chunks so good ty sir
@zuzuz18
@zuzuz18 Год назад
Super high quality video. One of your best yet
@fyndor
@fyndor Год назад
Hey Mr./Ms. video editor, loved the "Not sure what he wanted me to do here lol" :D I always forget most of the good content creators have an editor making these guys much better than they would be on their own. You are doing a good job btw, whoever you are.
@ffshawon1287
@ffshawon1287 Год назад
It really worked for me after I look and try some tutorials, yours is the one that worked. Owe you a lot.
@ThePrimeagen
@ThePrimeagen Год назад
LETS GO!!
@ds_7
@ds_7 Год назад
I loved this, I love your technical videos, MOAR CODE!!!
@chrisjames278
@chrisjames278 Год назад
Love these walk throughs. Great to have more
@thecoincritic
@thecoincritic Год назад
Thanks for the content. I've been working on how to rework blockchains without so much promise dependency...love these thought experiments. Best...hope the Volcano experiment works out!
@leptanian
@leptanian Год назад
Personally I like the more technical videos you make. These walkthroughs and explanations are extremely valuable imo. And as always the editing is top-notch, Flip is the man.
@_Aarius_
@_Aarius_ Год назад
Lots of the time people are writing code that's more IO bound than CPU bound, but it's still useful to know these tricks for the areas where you are in a hot CPU loop
@velho6298
@velho6298 Год назад
Great stuff! Interesting to listen these more technical topics.
@Rihsto
@Rihsto Год назад
Oh Prime these technical JS deep dives are fire 🔥🔥🔥
@dulanjala
@dulanjala Год назад
this is exactly the kind of content needed, deep dive into certain things...
@benjaminkindle1841
@benjaminkindle1841 Год назад
The amount of energy this guy can summon while talking about such dry topics is truly impressive
@m.minkov
@m.minkov Год назад
I have pressed all the buttons! I love these videos, I am incredibly interested in internals and how performance can be increased. Please dish out more!
@poochy661
@poochy661 Год назад
I really like these break-down videos where you show us what not to do and what to do if we want to go BLAZINGLY fast!
@calcs001
@calcs001 Год назад
Love this deep dive.. keep it technical, go deeeeeep sir, deeep!
@skiesaboveunlimitedstargaz7316
Awesome & Greatness!! Very Excellent point!! That's why I sometimes, do not use Promises especially if it takes a lot of time.. But it all depends on the data how you use them and put them onto the objects.
@tannishkmankar3998
@tannishkmankar3998 Год назад
IT WORKED, THANKS I'VE BEEN LOOKING FOR THIS FOREVER, BUT NO TUTORIAL COULD EXPLAIN IT AS YOU DID
@spitefol5504
@spitefol5504 Год назад
This is the best content I have seen by you, do more like this!
@nikensss
@nikensss Год назад
I also like the technical stuff, feels really nice to understand better what's going on with the tools you are using. Would it also be possible to share a repo with this code?
@th34lch3m1st
@th34lch3m1st Год назад
I like it. Really inspiring concepts. Keep it up.
@TheKiller9696
@TheKiller9696 Год назад
Really enjoyed this content! Would love more videos like this
@TheKiller9696
@TheKiller9696 Год назад
@ThePrimeagen good job, you are big enough to have bots
@abneryang2102
@abneryang2102 Год назад
More of this plz. CI jest runs have been killing us and this was cool to watch with that in mind
@dickheadrecs
@dickheadrecs Год назад
i’m here for this, the hot takes are just gravy
@wlidWisdom
@wlidWisdom Год назад
i love these king of videos .. keep going !
@fluffykeebz
@fluffykeebz Год назад
2:34 -- first time I have been unable to resist the call to hit subscribe. I have subscribed, Daddy Primeagen.
@aburner230
@aburner230 Год назад
+1 more deep dives, this is the first video of yours I watched, and it was great
@mikebruce6790
@mikebruce6790 Год назад
Awesome video, thanks for making this 🙏
@codewithguillaume
@codewithguillaume Год назад
Dude I love this video. Got to watch it again.
@AlphaWatt
@AlphaWatt Год назад
Love this stuff Prime
@c__beck
@c__beck Год назад
I'd love to see one of these showing the Promise issue you mentioned!
@alejonanez
@alejonanez Год назад
Man, this channel is the best 🎉
@joaomachado9105
@joaomachado9105 Год назад
your amazing but that editor does wonders too, props to that dude/lady whoever he/she is xD
@writegoodcode
@writegoodcode Год назад
dude love this, please make more technical content like this.
@ThePrimeagen
@ThePrimeagen Год назад
I thought it was fun
@writegoodcode
@writegoodcode Год назад
@@ThePrimeagen yup it definitely was
@writegoodcode
@writegoodcode Год назад
@@ThePrimeagen learnt so much, like sucking mics, etc
@SahraClayton
@SahraClayton Год назад
As a newbie to programming I didn't not have a clue what the Primeagen was talking about, but I still really enjoyed it.
@GovindKumar-pe4lz
@GovindKumar-pe4lz Год назад
Thank you for explaining this thoroughly!
@marcolerena456
@marcolerena456 Год назад
Hey Prime, I checked out your course on Frontend Masters, but I don't wana pay for their monthly membership just for your courses - I'd rather just buy courses from you. Also, I would really love a comprehensive backend course (in Js(ts) and/or rust) from you. You're one of the most entertaining and technically competent programmers on youtube. I'd love to learn from you!
@dontpanicyou
@dontpanicyou Год назад
definitely a fan of these JS deep dives.
@null_bite
@null_bite Год назад
Love thiss .. keep em coming!! 😍
@ethSiberianDex
@ethSiberianDex Год назад
I love these science adjacent videos, they are like reading scientific articles but more fun
@ErmandDurro
@ErmandDurro Год назад
Really great content. Love it 😀
@jogofin4939
@jogofin4939 Год назад
I'd like to see a more in-depth breakdown of how garbage collection works as pertains to promises, and how you circumvented promises altogether. Good stuff
@markclynch
@markclynch Год назад
Love the more technical deep dives
@erikslorenz
@erikslorenz Год назад
This is great thanks. I usually don't worry too much about it since if I'm using JavaScript it's not in a performance = money scenario
@harrybilsonia
@harrybilsonia Год назад
Prime!! Sending you some algorithmic clues to show more code
@alexcasillas
@alexcasillas Год назад
Great video!! Though I’m extremely curious about the refactor of the promises and that performance gain, can you elaborate more on it apart from GC taking so much time? I’d love a video about this :) Great job, love your channel 🔝
@ThePrimeagen
@ThePrimeagen Год назад
I'll do a video on it.
@Kurimson
@Kurimson Год назад
Yea, me too. Definitely Left me wanting more 😊.
@willl0014
@willl0014 Год назад
I didn't understand half of it, but this was a pretty interesting video. I think i will look into this more. Thank you for sharing
@changuchito69
@changuchito69 Год назад
love this type of videos!
@DIEZ919191
@DIEZ919191 Год назад
DAMN! Finally I found someone who teach like a savage! Usually I find myself sleeping right after couple of minutes of *explaining* something, here in a turn, I want to break my fckn retina display like rock star breaks his guitar! BTW didn't understand how you implemented test example, but it doesn't matter!
@ThePrimeagen
@ThePrimeagen Год назад
hah, well, i do like teaching at break neck speed
@taylorallred6208
@taylorallred6208 Год назад
I’ve heard that reference counting is a good strategy for UI’s. Would this mean that front end apps could get better performance with Rust and Wasm using ref counting (as wasm catches up with V8)?
@amirhoseinfarhadi2268
@amirhoseinfarhadi2268 3 месяца назад
We love this type of videos 😍😍
@tarotv4609
@tarotv4609 Год назад
Thank you for this! Super cool video! A+++
@mekhoinfo2118
@mekhoinfo2118 Год назад
the deepest video about JS I've ever watched lol, now I know that I have a long road before me to become like you @ThePrimegen
@gustavcoetzee5018
@gustavcoetzee5018 Год назад
Love this content. Learn good stuff
@syakhiskk
@syakhiskk Год назад
Genuine q's, are there any benefit of using ts/js in backend? I always thought that if I wanted performance, I would use something else.
@petrpechkurov3095
@petrpechkurov3095 Год назад
Thank you, Mr. ThePrimeagen!
@RafaLeyvaRuiz
@RafaLeyvaRuiz Год назад
I liked the video only because you send me to read the description and the way you requested was funny 😂
@michaelross3061
@michaelross3061 Год назад
Yay on the technical vids/amount of code. Made happy brain chemicals
@earthling_parth
@earthling_parth Год назад
I LOVE it! Please more technical stuff! PRIME, I AM SENDING YOU THE ALGORITHMIC SIGNALS PRIMMEEEEE!!!!
@ThePrimeagen
@ThePrimeagen Год назад
Let's go!!
@thanhn2001
@thanhn2001 Год назад
More please. I like this kind of stuff.
@giacomogagliano1526
@giacomogagliano1526 Год назад
you are way too funny =) and also smart!! great job!!
@yumyum7196
@yumyum7196 Год назад
Please!!!! More technical videos like this one 🙏🙏🙏
@mateuszciupa8141
@mateuszciupa8141 Год назад
that's why pure functions are advised and returning callbacks is disadvised
@TayTayChan
@TayTayChan Год назад
Yeah, tech-heavy videos are great. Code is life
@JRasmusBm
@JRasmusBm Год назад
Favorite vid so far 😃
@kiernanacuesta1417
@kiernanacuesta1417 Год назад
This is great, thank you!
@bryanchulander
@bryanchulander Год назад
So informative. Thank you
@wforbes87
@wforbes87 Год назад
actual technical content about a language that no one really thinks about technically is the true performance optimization involved here
@TomGeogecko
@TomGeogecko Год назад
Prime always missing the actual place of like button. Every time he says "it's there just press it" he points to some random direction :D
@LeandroCoutinho
@LeandroCoutinho Год назад
Amazing stuff! For more profiling like that!!!
@user-pz9qh9rj8z
@user-pz9qh9rj8z Год назад
thanks a lot!!! so nice reverb
@venkateshhariharan4341
@venkateshhariharan4341 Год назад
These kind of videos are educational thanks
@nitheeshraajar393
@nitheeshraajar393 10 месяцев назад
How/Where do you start learning all this stuff???? So much in-depth knowledge and its really fascinating. Makes me wanna go indepth too
@lopoyadriang.9114
@lopoyadriang.9114 Год назад
Thank you, it works perfect!
@farrellraafi1301
@farrellraafi1301 Год назад
I actually experimented with this when I try to port RPython to wasm. Basically leaking all the memory to do 1 full stack execution, and then shrink the memory back to the initial state in the next tick (setImmediate or setTimeout) is tons faster than applying GC algorithm and libraries even bigger one like boehm.
@DanielTateNZ
@DanielTateNZ Год назад
This is the only video you made I have enjoyed.
@arshadpakkali
@arshadpakkali Год назад
Would really appreciate it if you can make a video on why/how/when ditch promise to better performance
@cbbcbb6803
@cbbcbb6803 Год назад
Still interesting, still funny, still a great teacher.
@yx4292
@yx4292 Год назад
The idea of an object pool in a library like fastly sounds like (if I understand correctly) it would be incredibly easy to misuse, because the user needs to be very careful when to release the request object. On the one hand, if you release it too early/hold onto the object for too long and (for example) use it across an await point, the JS engine may well execute another request and it could reuse the released object (and effectively write request data of the new request to the object which is still in use by the other request). Then once it goes back to executing the old request, it has all the request data from the new request. On the other hand if you forget to release the object, it "leaks".This sounds almost like manual memory management but in JS
@taragnor
@taragnor Год назад
Yeah it's exactly like manual memory management in JS. And you run into all the pitfalls of manually memory management like in C, where you can have to worry about double free and making sure you actually don't have any more pointers to the old object when you toss it back into the pool. Otherwise you're going to have some seriously weird bugs as you could have multiple parts of your program using the same object, when in reality you want those objects to be different. You really need a very good reason to want to use a scheme like this, where for whatever reason you have a very performance critical section and need to take advantage of this. Though given the pitfalls of doing this code and maintaining it, this approach should be a last resort.
Далее
How 1,000 People Played Doom At The Same Time
15:42
Просмотров 39 тыс.
Is JSON Blazingly Fast or...?
9:57
Просмотров 185 тыс.
#kikakim
00:11
Просмотров 6 млн
Making a Game in JavaScript with No Experience
5:49
Просмотров 739 тыс.
Why I Cant Stand IDE's After Using VIM | Prime Reacts
17:51
This Algorithm is 1,606,240% FASTER
13:31
Просмотров 719 тыс.
What does larger scale software development look like?
24:15
Blazingly Fast JavaScript with ThePrimeagen | Preview
18:22
Новая материнка без USB!!
0:39
Просмотров 48 тыс.
ПЕРЕХОЖУ НА НОВЫЙ ТЕЛЕФОН!
10:34
Mem VPN - в Apple Store
0:30
Просмотров 69 тыс.