When I started writing The Imposterâs Handbook, this was the question that was in my head from the start: what the f*** is Big O and why should I care? I remember giving myself a few weeks to jump in and figure it out but, fortunately, I found that it was pretty straightforward after putting a few smaller concepts together.
Big O is conceptual. Many people want to qualify the efficiency of an algorithm based on the number of inputs. A common thought is if I have a list with 1 item it canât be O(n) because thereâs only 1 item so itâs O(1). This is an understandable approach, but Big O is a technical adjective, itâs not a benchmarking system. Itâs simply using math to describe the efficiency of what youâve created.
Big O is worst-case, always. That means that even if you think youâre looking for is the very first thing in the set, Big O doesnât care, a loop-based find is still considered O(n). Thatâs because Big O is just a descriptive way of thinking about the code youâve written, not the inputs expected.
THERE YOU HAVE IT
I find myself thinking about things in terms of Big O a lot. The cart example, above, happened to me just over a month ago and I needed to make sure that I was flexing the power of Redis as much as possible.
I donât want to turn this into a Redis commercial, but I will say that it (and systems like it) have a lot to offer when you start thinking about things in terms of time complexity, which you should! Itâs not premature optimization to think about Big O upfront, itâs programming and I donât mean to sound snotty about that! If you can clip an O(n) operation down to O(log n) then you should, donât you think?
So, quick review:
- Plucking an item from a list using an index or a key: O(1)
- Looping over a set of n items: O(n)
- A nested loop over n items: O(n^2)
- A divide and conquer algorithm: O(log n)
There's More...
The Imposter's Frontend Accelerator
JavaScript client frameworks are powerful and help you create an amazing experience for your end user. Unfortunately, learning how to use them sucks.
đ€ A Real World Approach to Playwright
Writing tests can be tricky, especially using a more complex tool like Playwright. I took some time and dug in over the last year and I'm happy I did.
What Is Your Yeet Threshold?
Solving problems is what we do, but sometimes the solution is to burn it all down and start again, learning from your mistakes. How do you make this choice?