macrobench and benchmark
benchmark 是什么benchmark 这个词怎么来的为什么不是别的写法,比如 benchtest?microbenchmark vs macrobenchm 2026-7-19 04:58:24 Author: dyrnq.com(查看原文) 阅读量:8 收藏

“macrobench” 这个词本身通常是 macrobenchmark 的缩写,而 “benchmark” 是大类概念。两者的关系大致是:

benchmark = 基准测试(总称)
macrobenchmark = 宏基准测试(benchmark 里的一个子类型)

下面分两层说清楚。


benchmark 是什么

  • benchmark(基准测试)就是:
  • 设计一套可重复的测试用例,
  • 在固定环境下运行系统/程序,
  • 测量性能指标(吞吐量、延迟、资源占用等),
  • 用作“基准”,便于对比不同版本、配置或系统。
  • 它可以是很小的函数测试,也可以是整套业务流程的性能压测。

所以 benchmark 是一个统称,下面可以细分出不同类型:

  • microbenchmark(微基准测试)
  • macrobenchmark(宏基准测试)
  • 以及一些中间层级(有些文章叫 mesobench 等)。

benchmark 这个词怎么来的

benchmark 原词拆开就是:

  • bench:长凳、平台;在测量学里指可以放仪器的一小块平面或支架。
  • mark:刻痕、标记、记号。

词源里,benchmark 最早指:

  • 测量人员在石头、墙或固定物体上刻下的一条线或一个标记,用来放水平仪(或尺子)的“台子/槽”。
  • 这条刻线就是固定的高度/位置基准,用来测海拔或其他高度。

也就是说,最初的 benchmark 真的是“bench 上的 mark”:一个刻出来的记号,用来作为测量时的参照点。

后来语义演变:

  1. 从“物理上的刻记号” → “测量中的基准点”。
  2. 进一步 → “任何可以用来比较/衡量的标准、基准”。
  3. 在计算机里 → “用来评估性能的一组标准测试或程序”,也就是我们现在说的性能 benchmark。

所以这里的 mark 仍然是“记号、标记”的意思,只不过是“作为测量基准的记号”,而不是随便一个标记。

为什么不是别的写法,比如 benchtest

因为这个词先在现实工地/测量现场被用出来:

  • 先有实际的“在石头上刻个 mark 当基准”的操作,
  • 用久了,这个“刻的 mark”就被叫做 benchmark,
  • 再后来才引申到抽象意义(标准、基线、测试基准)。

所以:

benchmark 里的 mark 仍然是“记号、刻痕”的那个 mark,只是这个记号有一个特定角色:作为其他测量/比较的基准点

这也对应了中文里“基准点、基准线、基准测试”这些翻译:
– 有一个“刻出来的记号/点”,用它来衡量其他东西,所以叫 benchmark。

microbenchmark vs macrobenchmark(Macrobench)

microbenchmark(微基准)

  • 针对 非常局部、细粒度 的对象:
  • 某个函数调用、某个算法核心循环。
  • 某个 CPU 操作、内存访问模式等。
  • 用来回答的问题是:
  • “这段代码本身有多快?”
  • “这个算法版本 A 比版本 B 快多少?”

特点:

  • 可控性强、噪声小。
  • 但不一定能反映真实用户场景中的整体性能。

macrobenchmark(宏基准,也就是macrobench)

  • 针对 完整系统或完整业务场景
  • 例如一次 Web 请求从入口到数据库的完整链路。
  • 一个应用的启动、登录、下单等真实用户路径。
  • 用来回答的问题是:
  • “整套系统在真实/近似真实负载下的性能如何?”
  • “不同架构/不同版本对整体体验的影响怎样?”

特点:

  • 更接近用户实际体验(响应时间、吞吐量、稳定性)。
  • 但因为涉及组件多,噪声更大、难以精确归因。

很多官方文档会直接写:基准测试程序可分为微基准测试(microbenchmark)和宏基准测试(macrobenchmark),微基准测某一特定方面(CPU、内存、I/O 等),宏基准测系统总体性能或优化方法的通用性。


在具体生态里的用法(比如 Android)

在一些具体框架里(例如 Android 性能库):

  • benchmark(基准测试):总的“测性能”的活动。
  • Macrobenchmark:
  • 测量“应用启动、滚动列表、界面交互”等高级别入口或交互
  • 用外部方式驱动应用,像用户那样操作,关注 终端用户体验
  • microbenchmark:
  • 在一个循环里直接调用某段应用代码,
  • 主要测 CPU 工作 的最佳情况性能,比如某个函数的执行时间。

官方文档明确把 Macrobenchmark 和 microbenchmark 作为两种不同层级的基准测试库:前者偏“整体交互/系统级”,后者偏“函数级”。 developer.android


总结一句话

  • benchmark:泛指所有“性能基准测试”活动和工具。
  • macrobenchmark(macrobench):benchmark 的一个子类,专门指宏观、系统级、接近真实用户场景的性能测试。
  • microbenchmark:benchmark 里的另一子类,专门测局部代码/单函数的性能。

如果某个具体项目里的 “macrobench” 类/模块(比如 Android 或某个性能测试框架),那它通常就是“负责宏基准测试”的那一套,相对于“细粒度的 regular benchmark / microbenchmark”。


文章来源: https://dyrnq.com/macrobench-and-benchmark/
如有侵权请联系:admin#unsafe.sh