It is in my nature to get into the weeds on system performance. It’s part of the engineer in me that likes quantifying things that can be quantified and trying to figure out what is going on based on that. As I’m diving deeper into Dart and Flutter I’m finding myself doing exactly that. It was originally just one little thing I was studying. Then it turned into a much bigger thing which spun off two other studies. That was on top of a few other language specific quirks that I identified earlier this year. Since it’s going to be many posts over time I wanted to put up this post to explain my reasons for doing this. I also wanted to get ahead of one false notion about benchmarks. I’m not doing this to prove that Dart is the fastest leanest language of them all (spoiler alert, it’s not) but just to quantify behaviors and document that.
If you take nothing else away from this then it should be that for the most part I don’t care about if a platform is the absolute fastest or the leanest. I am generally concerned with how much more bloated things are becoming in the world, hence my post about dabbling with the V language. That is more a general critique and hope that we can lean things down some though. When it comes to my ultimate platform selection there are many other factors at play. Within reason if it performant enough and lean enough then what matters is if there are other redeeming qualities to it. Perhaps it comes from much of my career being writing code for the JVM and .NET CLR. It was probably even more driven home by my stint of time working with Ruby, which is substantially slower than even those two.
At the same time I like knowing what I’m dealing with in terms of performance. One of the things I’m thinking of studying/quantifying is the supposed overhead of using
forEach on collections instead of doing the full for-loops. Another is exploring the advantages and disadvantages of using the various deployment strategies for applications.
As of now with several months of using Dart and Flutter for a real world application I know that it has sufficient performance and leanness for most if not all of the applications I’d use for it. That doesn’t necessarily mean I’ll choose it for everything I’d write. It does mean that performance problems will not be what would have me look at other platforms. At the same time perhaps my studies could spawn some discussions about why things operate a certain way and if they should operate differently. At the very least it will be informative to other Dart/Flutter developers.