- Mastering Rust
- Rahul Sharma Vesa Kaihlavirta
- 297字
- 2021-07-02 13:35:27
Benchmarks
When business needs change and your program gets a requirement to perform more efficiently, the first step to take is to find out the areas that are slow in the program. How can you tell where the bottlenecks are? You can tell by measuring individual parts of your program on various expected ranges or on a magnitude of inputs. This is known as benchmarking your code. Benchmarking is usually done at the very last stage of development (but does not have to be) to provide insights on areas where there are performance pitfalls in code.
There are various ways to perform benchmark tests for a program. The trivial way is to use the Unix tool time to measure the execution time of your program after your changes. But that doesn't provide precise micro-level insights. Rust provides us with a built-in micro benchmarking framework. By micro benchmarking, we mean that it can be used to benchmark individual parts of the code in isolation and remains unbiased from external factors. However, it also means that we should not rely solely on micro benchmarks since the real world results can be skewed. Thus, a micro benchmark is often followed by profiling and macro benchmarking of the code. Nonetheless, micro benchmarking is often a starting point for improving the performance of your code as the individual parts contribute a lot to the overall running time of your program.
In this section, we will discuss the tool that Rust provides as a built in for performing micro benchmarks. Rust lowers the bar for writing benchmarking code right from the initial stages of development, rather than doing it as a last resort. The way you run benchmarks is similar to how tests are run, but uses the cargo bench command instead.
- 極簡(jiǎn)算法史:從數(shù)學(xué)到機(jī)器的故事
- C語言程序設(shè)計(jì)習(xí)題解析與上機(jī)指導(dǎo)(第4版)
- Learning Elixir
- Learning Linux Binary Analysis
- 面向STEM的Scratch創(chuàng)新課程
- VMware虛擬化技術(shù)
- Swift語言實(shí)戰(zhàn)精講
- Hands-On Full Stack Development with Go
- Learning Raspbian
- ServiceNow:Building Powerful Workflows
- Learning Apache Cassandra
- Mastering C++ Multithreading
- 區(qū)塊鏈國(guó)產(chǎn)化實(shí)踐指南:基于Fabric 2.0
- Mastering Elixir
- Scratch從入門到精通