Transcript from the "Performance Considerations" Lesson
>> I did threaten midway through our time together, just to kinda like riff a little bit about performance, right? You are still on the hook for performance. And yes, the jokes about how Chrome is a memory hog. You are now Chrome, welcome, you are part of the problem.
[00:00:20] That said, most of us use VS Code and don't complain, right? I would say most of us use Slack, and don't complain, but I don't know if that's true. But most of us, it is possible to have a performing app. The thing is that, yes, of course, Chromium is a dependency that is large, yes.
[00:00:40] That said, depending on if you're doing this for work, right? Like, okay, also like, were you ever going to build a Linux app? Or both? Was your company gonna spin up teens bespoke to a Mac OS? You probably weren't, right? And so you have that, and it is not true that all Electron apps are not memory hogs, or whatever.
[00:01:06] Again, I don't think I've ever complained about the performance characteristics of VS Code, right? Maybe it's taking up a lot of memory right now, I don't know. But the fact of the matter is, the bigger thing is there's so much under your control, right? If you do things like write file sync, which in a world of promises, if you do that, I don't.
[00:02:20] Yes, Chromium is a dependency, Chromium is large, but you also probably have 42 Chrome tabs open right now. You can still, for instance, one of the things that we would choose to optimize if we're gonna go all the way to the bottom of the apps that we built today, is that when we check to see if the file had changes on every input to bounce that, right?
[00:02:43] Like little things like that, that are true. If you are doing it in the browser is true when you're building an Electron app, right? You don't just because there's no network, always, that does not mean that you cannot cause your own performance issues. And to keep those things in mind, and a lot of the best practices will get you most of the way there.
[00:03:04] If you are doing things that are expensive, one, make sure they're asynchronous, but two, either that, or you have web workers available, right? And you have them reliably cuz you're not worried about different browsers. You have child processes and node that you can use. And in fact, you don't even need to use the child processes cuz you could spin up a renderer process, right?
[00:03:24] That has no window, that it shows, that is a second thread that you could offload work to through that inter-process communication. And it's no different than anything that we saw before, right? You would just simply send stuff to it, and receive stuff in the same IPC that we saw earlier.
[00:03:39] All those things are there, and you do have to leverage them, and make use of them. But there's nothing like inherently, there are enough, fast snappy mission-critical Electron apps out there that you don't get to blame Electron if your app is slow, right? And like all, but like there's not unique and special principles around Electron.
[00:04:01] It is the same unique and special principles around web development, but also. Yeah, and you don't have to deal with the network, so it should be easier, right? And so just kind of, and if you do have to deal with a network, maybe storing stuff, and doing progressive loading, and a lot of the PWA techniques makes total sense.
[00:04:19] And again, it is a much more reliable situation, except for the fact that if you write code that corrupts databases on somebody else's computer, it is a lot harder to fix. There is that kind of stuff as well.