How I Made JavaScript BLAZINGLY FAST

Поділитися
Вставка
  • Опубліковано 16 жов 2022
  • 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
  • Наука та технологія

КОМЕНТАРІ • 447

  • @blirdo
    @blirdo Рік тому +1186

    I'm pretty sure that Prime is talking about my code when he says garbage collection.

    • @paulheisner
      @paulheisner Рік тому +47

      Holy sh**, i had to laugh out loud reading this

    • @ayoub.k
      @ayoub.k Рік тому +10

      Your comment wins.

    • @asedtf
      @asedtf Рік тому +8

      My collection of garbage is certainly slow.
      This statement is true in every possible interpretation

    • @ThePrimeagen
      @ThePrimeagen  Рік тому +222

      its beautiful
      but its garbage

    • @blirdo
      @blirdo Рік тому +38

      @@ThePrimeagen I thought it was what's on the inner scope that counts :(

  • @artifishul
    @artifishul Рік тому +72

    Big fan of the more technical stuff like this

  • @stasgavrylov
    @stasgavrylov Рік тому +303

    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  Рік тому +71

      i will! for you, here you go github.com/ThePrimeagen/yt/blob/master/is-javascript-slow/test.js

    • @stasgavrylov
      @stasgavrylov Рік тому +22

      @@ThePrimeagen 👈😎👈

    • @Draxen
      @Draxen Рік тому

      Agreed, straight 🔥

    • @HuxleysShaggyDog
      @HuxleysShaggyDog 10 місяців тому

      Based

  • @Psy45Kai
    @Psy45Kai Рік тому +175

    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 Рік тому +1

      hey, please what's JS ninja?
      did he mention it in this video?
      ask cos I may not watch till the end 😬

    • @jesusgonzalez5709
      @jesusgonzalez5709 Рік тому +1

      100% agree

    • @ThePrimeagen
      @ThePrimeagen  Рік тому +24

      just trying to have a bit of fun out here

    • @pchick
      @pchick Рік тому +6

      @@benjaminughegbe4255 it just means proficient with js

    • @benjaminughegbe4255
      @benjaminughegbe4255 Рік тому +1

      @@pchick oh, thanks a lot

  • @alexandersemionov5790
    @alexandersemionov5790 Рік тому +41

    I love it. Object pool is quite a popular technique in game engines to reuse npcs and so on. Please continue with this format

  • @cal3461
    @cal3461 Рік тому +19

    Awesome timing. Just learned about how Rust manages memory today so this will be a nice contrast!

  • @scottiedoesno
    @scottiedoesno Рік тому +39

    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 Рік тому +1

    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!

  • @blackfrog1534
    @blackfrog1534 Рік тому +26

    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  Рік тому +8

      yaya!
      I do love the technical content and i think its super fun.

  • @Zzznmop
    @Zzznmop Рік тому +1

    It’s crazy that I’ve watched your channel on twitch and UA-cam for years and learn something new every time I listen
    Thank you!

  • @lisyr4918
    @lisyr4918 Рік тому +38

    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 8 місяців тому

      @@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 8 місяців тому

      @@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 7 місяців тому

      @@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.

  • @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!!!

  • @jamesfoley4426
    @jamesfoley4426 Рік тому +6

    I really enjoyed this video and yes I would like to see more content where you do a code review just like this. UA-cam 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.

  • @fyndor
    @fyndor Рік тому +3

    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.

  • @82TheKnocKY
    @82TheKnocKY Рік тому +1

    I love this!
    This is the data based advanced stuff that no one else on UA-cam really does. With realworld fang experience to back it too!

  • @MrBaudin
    @MrBaudin Рік тому +5

    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.

  • @aaronroethe1010
    @aaronroethe1010 Рік тому

    love all your videos, keep up the technical side and I love your Go content!

  • @conradbuck2414
    @conradbuck2414 Рік тому +18

    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!

  • @krombopuloslincler4849
    @krombopuloslincler4849 Рік тому +5

    Please do these type of videos more. Love it

  • @typeer
    @typeer Рік тому

    Man I'm so grateful for you communicating this stuff in 10 min chunks so good ty sir

  • @daveisradicle
    @daveisradicle Рік тому

    Great video, super smart way of showing off GC operations and how to work around them.

  • @zuzuz18
    @zuzuz18 Рік тому +1

    Super high quality video. One of your best yet

  • @klegsy
    @klegsy Рік тому

    These are the primeagen videos I enjoy the most! Keep them coming

  • @Rihsto
    @Rihsto Рік тому

    Oh Prime these technical JS deep dives are fire 🔥🔥🔥

  • @chrishamilton1728
    @chrishamilton1728 Рік тому +44

    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  Рік тому +18

      probably could squeeze quite a bit out on the server if they stopped

    • @chrishamilton1728
      @chrishamilton1728 Рік тому +36

      ​@@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 Рік тому +16

      ​@@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

  • @leptanian
    @leptanian Рік тому +17

    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.

  • @velho6298
    @velho6298 Рік тому

    Great stuff! Interesting to listen these more technical topics.

  • @fluffykeebz
    @fluffykeebz Рік тому

    2:34 -- first time I have been unable to resist the call to hit subscribe. I have subscribed, Daddy Primeagen.

  • @benjaminkindle1841
    @benjaminkindle1841 Рік тому +2

    The amount of energy this guy can summon while talking about such dry topics is truly impressive

  • @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!

  • @chrisjames278
    @chrisjames278 Рік тому +18

    Love these walk throughs. Great to have more

  • @ds_7
    @ds_7 Рік тому +1

    I loved this, I love your technical videos, MOAR CODE!!!

  • @calcs001
    @calcs001 Рік тому +1

    Love this deep dive.. keep it technical, go deeeeeep sir, deeep!

  • @dulanjala
    @dulanjala Рік тому

    this is exactly the kind of content needed, deep dive into certain things...

  • @spitefol5504
    @spitefol5504 Рік тому

    This is the best content I have seen by you, do more like this!

  • @tannishkmankar3998
    @tannishkmankar3998 Рік тому

    IT WORKED, THANKS I'VE BEEN LOOKING FOR THIS FOREVER, BUT NO TUTORIAL COULD EXPLAIN IT AS YOU DID

  • @codewithguillaume
    @codewithguillaume Рік тому

    Dude I love this video. Got to watch it again.

  • @_Aarius_
    @_Aarius_ Рік тому +1

    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

  • @AlphaWatt
    @AlphaWatt Рік тому +1

    Love this stuff Prime

  • @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!

  • @aburner230
    @aburner230 Рік тому

    +1 more deep dives, this is the first video of yours I watched, and it was great

  • @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!

  • @joaomachado9105
    @joaomachado9105 Рік тому +2

    your amazing but that editor does wonders too, props to that dude/lady whoever he/she is xD

  • @wlidWisdom
    @wlidWisdom Рік тому

    i love these king of videos .. keep going !

  • @dickheadrecs
    @dickheadrecs Рік тому

    i’m here for this, the hot takes are just gravy

  • @nitheeshraajar393
    @nitheeshraajar393 9 місяців тому

    How/Where do you start learning all this stuff???? So much in-depth knowledge and its really fascinating. Makes me wanna go indepth too

  • @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.

  • @ffshawon1287
    @ffshawon1287 Рік тому +2

    It really worked for me after I look and try some tutorials, yours is the one that worked. Owe you a lot.

  • @null_bite
    @null_bite Рік тому

    Love thiss .. keep em coming!! 😍

  • @TheKiller9696
    @TheKiller9696 Рік тому

    Really enjoyed this content! Would love more videos like this

    • @TheKiller9696
      @TheKiller9696 Рік тому +1

      @ThePrimeagen good job, you are big enough to have bots

  • @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!

  • @abneryang2102
    @abneryang2102 Рік тому

    More of this plz. CI jest runs have been killing us and this was cool to watch with that in mind

  • @th34lch3m1st
    @th34lch3m1st Рік тому

    I like it. Really inspiring concepts. Keep it up.

  • @mikebruce6790
    @mikebruce6790 Рік тому

    Awesome video, thanks for making this 🙏

  • @alejonanez
    @alejonanez Рік тому +1

    Man, this channel is the best 🎉

  • @markclynch
    @markclynch Рік тому

    Love the more technical deep dives

  • @CraigClayton-bk3ze
    @CraigClayton-bk3ze Рік тому

    As a newbie to programming I didn't not have a clue what the Primeagen was talking about, but I still really enjoyed it.

  • @petrpechkurov3095
    @petrpechkurov3095 Рік тому

    Thank you, Mr. ThePrimeagen!

  • @c__beck
    @c__beck Рік тому

    I'd love to see one of these showing the Promise issue you mentioned!

  • @writegoodcode
    @writegoodcode Рік тому +2

    dude love this, please make more technical content like this.

    • @ThePrimeagen
      @ThePrimeagen  Рік тому +2

      I thought it was fun

    • @writegoodcode
      @writegoodcode Рік тому +1

      @@ThePrimeagen yup it definitely was

    • @writegoodcode
      @writegoodcode Рік тому +1

      @@ThePrimeagen learnt so much, like sucking mics, etc

  • @nikensss
    @nikensss Рік тому +2

    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?

  • @GovindKumar-pe4lz
    @GovindKumar-pe4lz Рік тому

    Thank you for explaining this thoroughly!

  • @jogofin4939
    @jogofin4939 Рік тому +1

    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

  • @ethSiberianDex
    @ethSiberianDex Рік тому

    I love these science adjacent videos, they are like reading scientific articles but more fun

  • @codingdude8782
    @codingdude8782 9 місяців тому

    Do more, I love this video

  • @ErmandDurro
    @ErmandDurro Рік тому

    Really great content. Love it 😀

  • @changuchito69
    @changuchito69 Рік тому

    love this type of videos!

  • @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

  • @StuartLoria
    @StuartLoria 9 місяців тому

    I liked this video, I would like to see the one where he replaces promises

  • @dontpanicyou
    @dontpanicyou Рік тому

    definitely a fan of these JS deep dives.

  • @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

  • @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

  • @alexcasillas
    @alexcasillas Рік тому +2

    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  Рік тому +3

      I'll do a video on it.

    • @Kurimson
      @Kurimson Рік тому

      Yea, me too. Definitely Left me wanting more 😊.

  • @DIEZ919191
    @DIEZ919191 Рік тому +1

    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 Рік тому +1

    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)?

  • @harrybilsonia
    @harrybilsonia Рік тому +1

    Prime!! Sending you some algorithmic clues to show more code

  • @kiernanacuesta1417
    @kiernanacuesta1417 Рік тому

    This is great, thank you!

  • @wforbes87
    @wforbes87 Рік тому

    actual technical content about a language that no one really thinks about technically is the true performance optimization involved here

  • @TayTayChan
    @TayTayChan Рік тому +3

    Yeah, tech-heavy videos are great. Code is life

  • @amirhoseinfarhadi2268
    @amirhoseinfarhadi2268 2 місяці тому

    We love this type of videos 😍😍

  • @RafaLeyvaRuiz
    @RafaLeyvaRuiz Рік тому

    I liked the video only because you send me to read the description and the way you requested was funny 😂

  • @earthling_parth
    @earthling_parth Рік тому +1

    I LOVE it! Please more technical stuff! PRIME, I AM SENDING YOU THE ALGORITHMIC SIGNALS PRIMMEEEEE!!!!

  • @bryanchulander
    @bryanchulander Рік тому

    So informative. Thank you

  • @syakhiskk
    @syakhiskk Рік тому +1

    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.

  • @michaelross3061
    @michaelross3061 Рік тому

    Yay on the technical vids/amount of code. Made happy brain chemicals

  • @user-pz9qh9rj8z
    @user-pz9qh9rj8z Рік тому

    thanks a lot!!! so nice reverb

  • @lopoyadriang.9114
    @lopoyadriang.9114 Рік тому

    Thank you, it works perfect!

  • @gustavcoetzee5018
    @gustavcoetzee5018 Рік тому

    Love this content. Learn good stuff

  • @JRasmusBm
    @JRasmusBm Рік тому

    Favorite vid so far 😃

  • @yumyum7196
    @yumyum7196 Рік тому

    Please!!!! More technical videos like this one 🙏🙏🙏

  • @tarotv4609
    @tarotv4609 Рік тому

    Thank you for this! Super cool video! A+++

  • @thanhn2001
    @thanhn2001 Рік тому

    More please. I like this kind of stuff.

  • @LeandroCoutinho
    @LeandroCoutinho Рік тому

    Amazing stuff! For more profiling like that!!!

  • @g3l0y
    @g3l0y Рік тому +3

    Faster prime, I need this in my project

  • @giacomogagliano1526
    @giacomogagliano1526 Рік тому

    you are way too funny =) and also smart!! great job!!

  • @ayca198
    @ayca198 Рік тому

    That was great. Thank you.

  • @ahmadkhudai
    @ahmadkhudai Рік тому

    liked, subscribed, and pressed the bell. Great video

  • @venkateshhariharan4341
    @venkateshhariharan4341 Рік тому

    These kind of videos are educational thanks

  • @bryanchulander
    @bryanchulander Рік тому

    Keep making these

  • @piyushdanej3930
    @piyushdanej3930 Рік тому +1

    So basically in a nut shell
    You tried to make it Blazingly Fast !!