# Making @benchmark outputs statistically meaningful, and actionable

**URL:** <https://discourse.julialang.org/t/making-benchmark-outputs-statistically-meaningful-and-actionable/104256>\
**Category:** Profiling\
**Tags:** benchmark, benchmarktools\
**Created:** [September 26, 2023, 11:38am UTC](https://discourse.julialang.org/t/making-benchmark-outputs-statistically-meaningful-and-actionable/104256 "2023-09-26T11:38:25Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [September 26, 2023, 3:37pm UTC](https://discourse.julialang.org/t/making-benchmark-outputs-statistically-meaningful-and-actionable/104256/14 "2023-09-26T15:37:24Z")

</div>

Have you tried passing a `setup` block that re-allocates/copies/shuffles around your data?

It could be caching/locality effects, but it could also be _so many things_. Modern computer architectures (and operating systems) are wild. From thermal throttling to [(surprisingly long-lived)](https://discourse.julialang.org/t/psa-microbenchmarks-remember-branch-history/17436) branch prediction to caching to multithreading to hyperthreading… you’re performance fine-tuning in a hostile environment.

---

_[View the full topic](https://discourse.julialang.org/t/making-benchmark-outputs-statistically-meaningful-and-actionable/104256)._
