【发布时间】:2013-04-20 23:08:21
【问题描述】:
编写一个程序并尝试比较(测量,如果可以的话)从主存和缓存访问数据的时间。
如果能做到,那如何衡量每一级缓存的速度呢?
【问题讨论】:
-
tnis 是否可行?缓存不在您的控制之下,您无法知道何时从何处加载数据。 (好吧,也许你可以跟踪缓存未命中,但我猜跟踪开销会混淆结果。)
-
也许使用寄存器和mmap?但这似乎非常主观(除此之外,计算机上还有其他进程运行)。听起来像是应该在硬件级别上完成的事情;否则其他线程/进程/操作系统的东西会妨碍
-
据我所知,如果我在 C 中定义一个大数组,当我访问该数组中的一个元素时,该元素周围的数据似乎存储在缓存中。因此,如果我从头到尾访问数组,它将比随机访问(访问每个元素一次)更快——这是真的,但我不知道这是缓存或其他方式的结果。
-
也许您应该相信您可以真正、真正快速地从缓存中检索元素...
-
用于缓存基准测试的 Google 将产生大量点击,包括一些备受推崇的缓存基准测试程序。