Profiling vs Benchmarking 101

Oct 7, 2023ยท

2 min read

Play this article

๐๐ซ๐ž๐ฆ๐š๐ญ๐ฎ๐ซ๐ž ๐จ๐ฉ๐ญ๐ข๐ฆ๐ข๐ณ๐š๐ญ๐ข๐จ๐ง ๐ข๐ฌ ๐ญ๐ก๐ž ๐ซ๐จ๐จ๐ญ ๐จ๐Ÿ ๐š๐ฅ๐ฅ ๐ž๐ฏ๐ข๐ฅ - Donald Knuth

As a developer, we often dive into our codebase, thinking, "Hey, let's tweak this bit or give that part a little upgrade!" But, man, even the simplest-looking stuff can have a whole party going on behind the scenes. Modern frameworks? They're like magicians, hiding all the tricky bits and making everything seem easy-peasy. Crazy, right?

Before diving in headfirst, take a moment and ask yourself:

๐€๐ซ๐ž ๐˜๐จ๐ฎ ๐๐ซ๐จ๐Ÿ๐ข๐ฅ๐ข๐ง๐ , ๐๐ž๐ง๐œ๐ก๐ฆ๐š๐ซ๐ค๐ข๐ง๐ , ๐จ๐ซ ๐‰๐ฎ๐ฌ๐ญ ๐†๐ฎ๐ž๐ฌ๐ฌ๐ข๐ง๐ ?

Benchmarking is the process of measuring the performance of specific parts of your program, typically to compare before-and-after performance or to compare against other solutions. It gives you quantitative data about how fast they execute or how many resources they consume. When we benchmark, we take two competing pieces of code and compare them. It could be as simple as a one-liner, or as complex as an entire web framework. At the end of the task, we come up with a single metric - a score. We use the score to compare the two competing options.

Profiling is the process of analyzing a piece of code to understand where it spends its time, which helps identify bottlenecks or performance hotspots. Profiling doesnโ€™t usually produce a comparable โ€œscoreโ€ at the end with which to measure these alternatives, either. But thatโ€™s not to say profiling is useless - it can tell us a lot of valuable things, like what percentage of CPU time was used where, where memory was allocated, and what lines of code are important and which ones arenโ€™t.


๐–๐ก๐ž๐ง ๐ญ๐จ ๐ฎ๐ฌ๐ž ๐›๐ž๐ง๐œ๐ก๐ฆ๐š๐ซ๐ค๐ข๐ง๐ :

  • Use benchmarking when you have specific pieces of code and you want to compare their performance.

  • When you're trying to compare different algorithms or strategies to solve a particular problem, and you want to know which is the fastest.

๐–๐ก๐ž๐ง ๐ญ๐จ ๐ฎ๐ฌ๐ž ๐ฉ๐ซ๐จ๐Ÿ๐ข๐ฅ๐ข๐ง๐ :

  • Use profiling when you know there's a performance issue, but you're unsure where the problem lies.

  • When you're looking for a holistic view of your application's performance and want to understand which parts are consuming the most time or resources.

A good rule of thumb is to remind yourself every time "๐‘ฐ ๐’˜๐’Š๐’๐’ ๐’๐’๐’• ๐’๐’‘๐’•๐’Š๐’Ž๐’Š๐’›๐’† ๐’‚๐’๐’š๐’•๐’‰๐’Š๐’๐’ˆ ๐’Š๐’ ๐’Ž๐’š ๐’‚๐’‘๐’‘๐’๐’Š๐’„๐’‚๐’•๐’Š๐’๐’ ๐’–๐’๐’•๐’Š๐’ ๐’Ž๐’š ๐’Ž๐’†๐’•๐’“๐’Š๐’„๐’” ๐’•๐’†๐’๐’ ๐’Ž๐’† ๐’”๐’."