10 secrets to improve Javascript Performance. Erick Wendel. JS Fest 2019 Autumn

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
how are you doing Oh what is the energy after the break are you okay oh this content won't be so hard I think I will try to make some jokes because performance sometimes is boring so I will show how to use or how to make something fun using javascript and improving a little bit your code so I'm Eric I came from the other side of the world I came from Brazil and I will try to share something and I really want you to use these tips so let's go so first of all who is the backhanders here Oh JavaScript developer has front-end is in the well in backhanders and who is working actually with nodejs in production all perfect is a lot of people and who has worked since day s5o a lot of hands - I will show some examples that we work on the node then you know that we can use it a lot but you can also use this for older versions of nodes I will show actually this examples of node but it also works on browser so let's do it so this talk is about performance these talks about how to improve your application just making a few changes on our application i've been working a lot with nodejs performance on my company so i work with financial companies so we know that's working with money is not that easy so we must deliver more doing less so spending less money and there's something really fun that we can make using node and notice so much powerful so first we just must understand a few questions so why should you care about Application Lifecycle today we have Amazon we have Asia we have Google if we need more processing just schedule a new VM we have no problem so we can use any any tools we have outer scaling but sometimes we know that it doesn't work as we planned sometimes JavaScript doesn't work as we we are expecting so we should care about something and working with node we know that the event loop like the core of the node is single tread a single tread if something really wrong happens your application is down so you shouldn't enter your VM you have to restart her your application and you have to do all of this manually otherwise you can find like this kind of error like maximum call stack exceed or like your disk you have no enough space to store something so I will show something that might help you to avoid this kind of problem and actually they go here is small chains would fix a lot of big problems like in my company we have legacy application and we are trying to do the same that all people is doing we have a monolith and we are trying to breaking micro services and I was like looking in the code and looking for what I could improve and a lot of changes that I did is just avoiding processing fingers anymore in memory or caching applications and actually really small fixes but we can improve a lot so this is amazing but first of all let's start talking about JavaScript that the JavaScript has a lot of things that is different people that came from c-sharp from java they they have that the meaning they have the the knowledge about how to use and how to process but in JavaScript we know that sometimes it is hard so this is a good question what is the hardest behavior that we have in JavaScript you in the back what is the best what's the hardest parts of JavaScript good screen types all types would be so you what's your opinion what is the hardest behavior in JavaScript I didn't get it since this oh yeah the context so my opinion is synchronized operations so I mean like my opinion if you understand how callback works or how the event loop works or how the event handling helps or or not in node you can do everything and you just install packages and continually your applications so how to synchronize we have a lot of things that we can do we have a lot of way to do and many junior developers are like it struggling with JavaScript because they don't know how to start and what they can use so let's look at this code so this code actually is that little code but it's actually works so if we run this code we can see the result we can see the result is okay but what is wrong with this code so what is not wrong with this code when we go we have the callback here we have done and catch here we have the callback right there and we have the result so sometimes this would be hard to manage sometimes you are struggling a lot of concepts and maybe you can use one of them or just avoid using everything in the same code and you have a single weight as well here so if you have then catch if you have promises you don't need to use that so pay attention in what you're doing and pay attention what your team is trying to do and maybe you you learn more and more about JavaScript and sometimes you really want you to wait for something or you really want you like your third parties processing in background but you have to process in the same time sometimes we don't mean like in this case I have all people I have all cars but the cars is not the painting of people I can bring all people and I can bring our cars and I can return all of them when I run this code I have like the result we using async await with six seconds I just got you the database in a wait for the classic yueshen and then I got the result again doing the same code which has more change I just remove the async/await and now I will run it in parallel it's not parallel because javascript is a sink so now the JavaScript doesn't wait for that so we have fine cards and we have defined people and we use prompts all so we will solve all of these results and I can see this problem and see how is the result now it's half of the time so we can just change a little bit anything prove like twice more so it is so amazing and effective lips so this is hard to manage like we have Matt we have reduced we have four we have foreing we have a lot of things and this is the problem working with node and the people said no no tis not for hyper sensing it's not for using CPU because they don't know how to process this kind of thing in memory so let's just see let's see code you know in our water polemic language yeah polemic topic is JavaScript a programming language oh I don't know I'm not talking yeah I'm sure I would just show a few concepts yeah I won't fight here so let's look at this code so we have map we have filter and we have reduce so this looks like something that works on functional programming if you go to Haskell and if you go to f-sharp they can reproduce all of these functions in one single query one single function but in JavaScript it respected a whole collection on map we will get our salary from map we inspect the whole collection again in the salary and if you match this query we use reduce and we just go away three times so we have a minimum employees we run like three million interactions so maybe it's not so good but it's fine we have like 200 milliseconds it's not that good it's not that bad but imagine we just change this code for interactive codes oh this is so poetic if you haven't just changed the algorithm like here I have a code that looks like more I don't know more earlier then the order but when we run this code we have 20 seconds like 10 to 10 times faster than the another approach I'm not talking about avoid using map I'm not talking about it avoiding use reduce and filter just to look if you really really need to use these functions when you're doing your application and this will block your application and chew the operation will return result so yeah be careful and here we have other other concept like who came from c-sharp a lot of came from c-sharp from Java from Python oh just one guy oh what's good here when I it was like when I saw four JavaScript right I was like okay I can use that and I can see the result for each operation I will use oh wait and I will push this result on our array so when I run this code we can see the result so I was just using the structuring just to get the idea and I will find the hero with that ID when I run this code I can see the result like - like 20 seconds to run this application maybe we can have all their approach maybe we have other other things to solve that problem that would be faster we have the same code I just removed their weight and I put on promise all as we did before well now if you use promise all for that we have 10 times faster so this is amazing so just changing a little keywords I know that looks like so obvious but in production working and with money we know that sometimes we don't think about that and it's something that we should learn and cash as much as possible cash sometimes is magic or would be a problem would be like so expensive to maintain and is hard oh if you'd open this for pictures on Twitter later I will show my mom yeah so cash first of all user experience is important your developer or the third part or your consumer is your user experience is the user affected a stakeholder so if you do like an API that we spend 10 seconds to respond they will hate you or otherwise if you have like not documented application or API they will hate you using cash we can improve this more and more so as we did like the other talk was talking about meta programming using cash this is so amazing for users but I think nothing is a bullet-proof so we have to think in your little concepts before starting in before creating something using cash first of all how often your data change you need a real-time application or application we were just changing a month or once a day maybe if you you have no precedence or you can see how much you will change would be good to go to cash or not and how many requires how many customers you have so you have two customers oath dr. Mann cash no that's fine but you have more you have to respond more and more you should think about putting cash in your application and how much it would cost so this is a good question because when I will try to sell this idea to the boss you say okay this looks like so good but how much how much will be from my my credit card so maybe you should put this in the pan and try to see if it's really really nice for you or not and try to find where is the bottleneck in node we have lots of libraries that we can cache variables we can cache request we can cache queries and we can catch a lot of things just making it small changes and it would be really really nice for you yeah cash is amazing and for who doesn't know or never saw cash before it's just we have the first customer just coming through our application our application we learn where is acute we process everything and we get data from database but when they return to this result we will get this data processed we will put in the database and on the second request or the other requests they will get from cache so now they don't need to go to database again they can go from this cache that would be other database or other tools but yeah it's improve a lot and if you learn the browser we have the API that is the same ringtone but you can use on service averted API but it's just an example you can use local storage session storage in a lot of cool things to make in cache and improve your user experience and use p.m. - who is using Tim - oh it's amazing yeah for who doesn't know Pam - imagine this scenario we have this application and for some reason in production my database is out my database just doesn't return any data and I have nothing to return and I will start blocking the requests working with node peer node we will see the result and we will have to enter the VM or via SSH restart your application to see if the database is working or not actually it's not my problem it's not my application problem in this problem it's a database is an external party using p.m. June we can use on API in second time in background and we have the same problem here but here the PM should we start to restart for application here you try to connect a once or every second for you and whether you solve that problem I will just open my database again my database is running in background when I go back to my application I didn't anything but it's working now if you request this application if I try to see the results of the heroes is on so I can solve and I can like make sure that my application is not problem so yeah maybe you should know where is this an exception or you should know what is happening on your application but chemichi will help you a lot to solve this kind of problem and here we have other things on those on p.m. shoe you can scale you can put more copies of your application and in which will be like load balancer inside your application it is good it's useful I don't use this so much I use like on darker with cabinets or other uploads but if you want to make something like on Raspberry Pi or I don't know you have your ideas you can use that to choose so more to use more because note the event loop is single trash so you can this in your CPUs okay implement SSL in HTTP - have you seen the talk of Anna the NS talk she was talking about 80 speed 3 who doesn't know about HTTP 3 yeah was a surprise for me too I was like my god it's Peachtree who's using actually the HP - - oh it's not so many people but it's a lot of people using but 3 I think it's really new I don't know what's they different yet but yeah using this you can improve a lot so first of all 8 speech you would be 50 percent faster than your HTTP application it's used multiplexing so you can just respond a lot of files a lot of things using a single TCP request so you can get all of this data just in one request we have header compression so that the browser and your application is dealing with headers and they are trying to just exchange these headers and same thing and go back with this this data and sometimes it's not so good and you can have something really fast changing this and we have the server push so the server push will send the data to your customer orchard consumer we felt just rip scribe requesting so if you want a lot of requests this server will just push a lot of image for you just using events and it is binary format for the browser is better than just text so for the browser is safely work with binary and I know that is a lot of context I found out this image on the Google and I found oh ok I got it HT Picchu just out of this the waiter will delivery a warrants for you and hp1 who have to make a lot of requests to get this information actually using HP - they have a lot of benefits but I just bring what I think that is most powerful for us in your scenario and ultimate is optimize your response so maybe I will my god I will talk about other problem thing but I will show some like benefits and drawbacks but first of all know what your application needs and what your consumer we need so I'm talking about consumer because all most of them will be like api's or I'm fronting and just consuming an API and I for me is painful when like I want a data and I have to look at the huge JSON file and for me it doesn't make sense because I just need the name of hero and they sent all of the data of this hero and understand your external dependencies and inspect them so if you have a third part oh I have to access an API of third part and this API will respond for me in 50 seconds and I will pay for every request maybe you can cash or maybe you can make another approach just to avoid your customer waiting so and understand what application means so sometimes your database you have pool of connections you have like queries you have sometimes procedures to work on your database and sometimes it's hard to find your bottleneck and create indexes for no cars I did this recently work working with MongoDB it was so funny because people said among the bees is so fast we reached 3 million documents there and they query when I run the query the among to be said oh you should use in memory process to process this query because it's so huge we have a lot of data I said man 3 million is not so much maybe something wrong so I got there I analyzed the query that they are doing and I changed this for our indexes among the B and I it was so fast so I could just just sort from like 2 seconds 3 seconds for a few milliseconds just putting the cache I'm talking about mama D but it happen in both degrees in any database so this is amazing and you should know about your database or your consumers the final boundaries so what is the limits of your applications so you should just you want your return in one seconds ok explicit that so you should you want you maybe it's a to our customer ohm if you want this data you have to make another request so you can have more endpoints to go to your yard data and for the finding is you can avoid a lot of headaches just defining boundaries your application in this case I have a MongoDB but it's just you simplifying here I have the query and I have a similar that we did in memory I have the salary I will get all the salary is greater than zero I will project I will return to my customer only what they need they need name and salary so the ID that password and the other day that doesn't make sense for me so I would want only this data and make pagination so making pagination your consumer will make more requests for you but you avoid processing things in memory so you can just respond faster and they will get data from your application so this is it's super nice and just I feel change that you can make and this is fine so now another polemic things who is using graph coil in production oh my god yeah this is nice restful api is actually I'm neutral I'm not talking about when is the best one of the the wrong or is the bad but my point is imagine your graph call requests the graphic well you can explicit I you're requiring in your projection as we did on long DB but here we have like all of these queries and looks like nice for me but imagine if you have your legacy application and you want to change the graphic well just because the projection or just because the query my opinion doesn't make sense maybe graph query will help you in no other questions but if you have a legacy application and you want to improve your experience you can make on your actual simple HP request so I have like here the postman and I did as the face book did before I just passed on the query string what is the pagination what is the limits the fields so what's the fuel that I want so you can do the same that graphic routers using that way in this specific case that will help you in our in your legacy application so just changing how the consumer will request our data and I'm sure that you respond really really nice with less inspector pharmacy issues it's boring it's super boring sometimes we don't know what is our performance issue maybe five seconds for me is awesome I don't know for how many things I'm doing and sometimes how do I know if I have a performance issue in my case I knew that I had a problem with my application when my boss was calling me man we we are making like a campaign to make more transactions and we are not like we are scheduling a lot of new machines and you are trying to make a lot of new things but maybe application is not good so maybe we have to create in this case they are like making a strategy for cloud computing to process everything and I said many we are trying to do a kurd like we have opposed so it doesn't make sense that you would spend so many time like in this case we have 200 we support 200 requests concurrently and after the change we have like 2000 and I change only the library that makes the problem ok so this is my application is required HTP is just and didn't saw anything or note I'm just using the HCP and here I'm creating an array with a thousand lines and I'm creating like a random number if I run this code it works so we can see the result here if I just run I can see the result that is it's not for me it's returning the data and looks like good but imagine our customers amount will increase and sometimes it's not we will show later how it works first of all just a checkpoint let's talk about that tooling how we can find performance problems and how we can actually use we have a lot of but I will show what I've used because it works a lot for me we have o X o X's on the same company of Anna near farm they create this tool to show flame graphs so this is amazing you run your application and when you just control C on your application it will generate an HTML for you and will show like a graph like this function spend two seconds on JavaScript stack these other function is this time so this is amazing we're showing proxy how it works but we can see like the line of code that is the bottleneck of our application so I'm using a lot and I'm loving because my boss is just mainly you are crazy in performance you know this too is helping me a lot and here we have our cannon is also an accompanying that they did is this out ok no is a benchmark tool that we can run a lot of concurrent customers is the same idea of other load test too but I loved because it's on any PMS they hold no js' and it's processing data using CPU using a lot of things that many people said that the node is not for that but this application will show a lot of good things ok we have a legacy we have our application first of all let's run this application I have the OS running and in the other terminal I will run the auto piano it will run 100 customers simultaneously for 10 seconds by default but you can put more you can put query you can put a lot of things there and I could solve like 45,000 requests of this application oh and it will generate after a HML for us here on the bottom we can see the legend so the pink is the function that is the hardest or is the problematic code we can see here that we have the array from that is really a bottleneck if we click in this HTML button we can see actually the result so where is the problem all then my problem is on j/s file on Farley for line and if you click there you can see the result so I can have the whole result and I know where is the problem of my application and I can just be aware of this piece of code it makes it makes sense for me to change or not or just keep it for this application they have also the clinic Jas the clinic Jas is like a huge tooling that you can make a lot of things you can generate graphs you can see recommendations of your your code what is the node is growing or what is the vets working in old and they can show everything but in my case I didn't use this tool I did I use like a wax and the autocannon because for me was simpler and I could like solve something really really fast and here's the result so we can see like a graph and if you click on the bottom we have the recommendations so oh maybe you are running something in memory that is crazy for node and you should outer and if you click more they will show more and more recommendations for you and it's free so this is really really nice and will help a lot in applications it works for api's or it works for rho chains or anything being node you can do anything use these dogs and if you said oh I'm rude I just want to make something by myself you can go to the node Docs and you have the performance API you can measure you can do anything using they know it performs api's I don't recommend you to analyze each node I recommend you to use the platform's because I don't know if you know node is actually no just a lie javascript is a line note you're working with JavaScript but behind the scenes is C++ we just saw like on the Anna talk she was writing in JavaScript but the outcome the result was in C++ so we will get like events of autumn z optimizations of no and it's sometimes hard to manage and it helped me a lot so using real-time monitoring to analyze our app like my company will have a huge screen showing how is application going and how many time I'm spending for each request in what I talk to my customers when I was consultancy observability is there is much more than logs they said no if you have an exception I will log this code and I was saying email or something like that but you know only when you are customer call use so our goal here is to know first and if you have a serious problem we will call the customer or customer I have a problem here maybe one hour to an hour two hours I would solve but I will keep in touch so this is super nice for the customer and they will feel like you really care for their application we've used New Relic so New Relic is amazing for us but you can use any tool so New Relic for us will show transaction time we showed the what is the most expensive request or the URL you can configure like alerts on the slack you can configure a lot of things but I mean if you don't want just super powerful to or if you don't want like all of this data I recommend you just pay attention on this kind of metric like your transaction time your error rate so when if your application is being a lot of catch and a lot of exceptions you should see and you can see like where is your packages so a lot of problems in performance that I sold was like older packages like underscore in fourth version and now when I just updated they performance to just increase again so it was amazing and I could solve just changing the package and the version and use no jet streams oh this scares have a lot of developers this is a I think this is is because it's not so good documentation on this the website maybe there's a lot of myths and a lot of people coming from other languages and they try to make these for the either sway that is its way we used actually Fe s dot reach file in this case I'm working with files but you can work like processing videos and other stuff using streams as well but when you have Fe s dot read file what they notice you will get the whole file and we put in the memory when you do that your application your CPU or your memory just increase when you are processing a lot of request is hard to know the main thing using readable streams or actually using streams you can process all data like incrementally you can gradually up in h or can gradually make some decisions for your application in this case I have the red string I can see I can show oh how many bytes I will get from this code but I'm here I'm working with events I'm working with on the era event and I can see the result and when I have the end I will console the log of the result but here is amazing here is a experimental it's just new is not in production yet unknown but it's so nice to use now we have four oh we have 408 so we have a readable stream when I have the event on I will get the chunk that is the piece of the file the pits of the event and I will process so I can process much more now I can process gigabytes or terabytes using node just using streams so now you can use a lot and you can really process things using streams streams we have a lot of concepts in a lot of other good examples that you can use but I think this is something that we see in production is something that we use a lot and I think that would be good for you to change from FES read file to shoot streams and here to show that note is powerful I'm reading the dev random and is an infinite fire on Linux and Mac and we can read infinite fire on node so in this case I'm reading that file but actually I'm not putting the file on memory and just requires and I request the fund the first chunk of data you know we'll process it using the far off so the far off is a little bit different than firing so we get actually the object that we receive and I will show that just data in a real process I put this Cygnet this already is on github if you want to try this it's just when you run when you control see you see the result at the end so this is just to show because otherwise your application never stops because design finit fire on linux okay so you are talking let's see if it works if you are running this code we can see this easy code so I just create a file and when I control sea-ice I see here nine megabytes that I run from that random so you can use for a lot of things but this is so powerful for us and learn about no J's native modules so native modules a little bit complex then we are consume it we have to maybe learn a little bit C++ we have to learn maybe how they API works behind the scenes but it works so well and this is my words what note can do it delegate someone else so we can process known in memory okay we can use our library that will translate JavaScript to Lua we process on Reggie's will have the result and we can deliver everything so yeah we've note you can use a lot of things and you can make this exchange with other language and you have the v8 API so the v8 API we can use a lot of things right there you can change the event loop you can change how your machine is working but it's not safe for you do it by yourself and put in production we thought a little bit known about what's the VH does but I will show how to create first so imagine that we have here a C++ library so I'm hacker C++ we have the aim API an API is just the API to talk with know to make this interaction is the rapper's in your applications and I have like the function that is multiplied I will pass the parameters and now you just expose this code I will expose this code and I have a C++ code so my C++ is there I will just compile this code it will generate a file and when I go to my JavaScript application how you require this file when I require this file I can call multiply as well looks like a JavaScript function looks like something that I can really manage imagine that we are trying to make something to to change your handle of your PC you can do in C++ and you can talk with no so if you want so it's super powerful and a lot of things such decryption encryption is doing with C++ this is sometimes it scares a lot of people when you go to a package on old and you go to the module knows modules and we click to see the implementation it's just C++ it said oh my god I'm lost now but now you can use our of these functions that will translate the C++ sure actually it's not translation because your C++ is what they rerun in the code actually and when we run we can see the result so exactly the same that we had on JavaScript function it's so popular okay so before I conclude the code so let's go to the questions because I have a lot of 4:04 faces now so anyone captions oh yeah oh but performance is something it's not boring is amazing if you would like your boss will like you look at you different or your customer we see that's a super super powerful thank you for a great speech looks great looks very emotional it's fine for us but I have a question yeah what can you how you can comment this site of Donald not premature optimization is the root of all evil and programming talk again sorry premature optimization is the root of all evil in the programming oh yeah progressive programming is the evil premier premature optimization okay premature optimization is the root of the evil yeah yeah yeah this is a good point like when you are try let's see if you understand yeah this is something that when you are making application when you go to performance and you have no measure so you have to create a measure and sometimes would be i evil because you are like man i need to perform more mhm as equal more so maybe what we are trying to make in our company we have the what is the basic that we have to deliver to the customer like for us is 300 milliseconds per request and then after that we will see how it works and if they need or not you you use more memory I respond your question okay so you agree that all these tricks is not okay to implement at the start and from scratch that you only develop in development stage it should be after some user feedback right it depends it depends like with working with loops maybe you can change you you keep in mind how your application doing but in my experience all of the performance problems looks at me after production so is the production something is chaos but it is good to keep in mind like start your application with like a monitoring using a relic or using other applications and caching maybe caching would be later too because this is something that costs a little bit but yeah I think encode should be good to start with okay thank you yeah and another question you show three approaches in development it's like react the reactive approach directly reactive yeah and other things do you think is okay to mix all these approaches in one code base yeah I think it's not a problem if you you have like organism like using map filter and reduce sometimes we use a lot in your application it's not so problem but sometimes like when we need deeply performance and when we have the bottleneck I change to imperative code so it depends depends while you are processing like if you have pagination maybe you don't have problem with MapReduce maybe yeah it depends your application okay thank you oh yeah more questions questions questions thank you for the talk it was really emotional and exciting to listen listen driving I have a way I think it's not fair when you compare functional imperative style give the benchmark and didn't give the way how to fix functional style why didn't you tell us how to fix it it depends it depends of the Kaizen like in this case I'm not I'm just showing oh you can you want to use this just be aware what your application is doing like here I have three or four more we have actually library that can convert your did oh don't go don't go let's take a picture later I have to show my mom yeah and sometimes yeah sometimes you you have a library is random for example yeah yeah they said that is really nice to make that but in my opinion for that example would be imperative way good better yeah it depends on the case yeah but the performance would be the same it depends because in that case I have like I have a collection and emilion require a million users so i running three times i have to process three times more i would spend more CPU and memory and maybe I will block they even look using the imperative way I just run a million so it's just once and just fixing with using algorithm so in that case would be fast but was ROM Dan loader she would also run only million cycles he won't around three Millions only one no no in this case will be three million because for each request they node will you expect the whole collection no in loader will optimize in RAM de you can make no no you think yeah yes what they make you special we yeah but you can have both yeah yeah sure no this is something that I'm talking is it's not the bullet proof is what is better for you but just be aware what you can do or not our application yeah thank you oh you're welcome we're talking more questions questions questions questions okay so let's go to the conclusions so before we finish that so the conclusions here performance is not applications problem performance is human problem is human errors a lot of problems that we saw in production is not because node couldn't solve is not because Python couldn't solve or Java couldn't so it's something that developers are struggling with and sometimes we should like just see what your application is doing so trying to make your developers good and try to teach how JavaScript works that I'm sure that our performance problems not all but almost of them could solve using these approach and be hours aware what your application is doing so if your application is responsible to make our Akrid why are you running something background to process like a rogue team in the same time of your application sometimes it's not so good and keep JavaScript packages up today in my case I just updates the underscore package in my performance was so much better so try to see where is the bottleneck or application or just update your patches and try to see what would be happen on your app and learn JavaScript we are here to learn jobs so javascript is a maze language we are actually now it's amazing language is improving everyday and try to understand what is the life cycle and how JavaScript works in each platform and gotta go fast so you can make you can use all these chips in your production apps or your legacy apps and I'm sure that your customer will be happier with your application and actually you can spend more money in beers so you can use your money for something really nice so here is my website all of these talks all of this content that I'm doing is already there if you want to make something if you want to get the links is already there I will show here too if the oh thank you so much [Applause] now is the Lynx yeah if you want to take a picture of these links so all of the examples that I used is already on github so if you want you get the presentations already there follow me on Twitter I always publishing content just sharing knowledge and not the best and not I really want you can follow there and see memes and gifts and if you want to see the the reference is a lot of reference that you can see right here you can use in your production labs and all of these talks is actually something research and something that I've worked so I hope you enjoy it thank you so much [Applause]
Info
Channel: Fest Group
Views: 10,452
Rating: 4.8367348 out of 5
Keywords: Erick Wendel, Javascript, Cache, Node.js, Web APIs, Javascript Performance, javascript performance optimization, typescript vs javascript performance, chrome javascript performance profiler, javascript performance profiling, python vs javascript performance, javascript performance api example, Javascript loopsnested loops javascript, Web API, NodeJS performance
Id: GQlgR_69dmI
Channel Id: undefined
Length: 46min 18sec (2778 seconds)
Published: Mon Feb 10 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.