![]() |
1
161
在Linux上(有一个相当新的内核),您可以从/sys中获取这些信息:
此目录对于每个缓存级别都有一个子目录。每个目录都包含以下文件:
这将提供有关缓存的更多信息,包括缓存线大小(
|
![]() |
2
122
在Linux上,查看sysconf(3)。
您还可以使用getconf从命令行获取:
|
![]() |
3
111
我一直在做一些缓存线的工作,需要编写一个跨平台的函数。我把它交给了github的回购协议 https://github.com/NickStrupat/CacheLineSize ,或者您可以使用下面的源代码。你想怎么做就怎么做。
|
![]() |
4
30
在x86上,可以使用 CPUID 带函数2的指令,用于确定缓存和TLB的各种属性。解析函数2的输出有些复杂,所以我将介绍 Intel Processor Identification and the CPUID Instruction (PDF)。 要从C/C++代码中获取这些数据,您需要使用内联汇编、编译器内联函数或调用外部程序集函数来执行CPUID指令。 |
![]() |
5
8
如果使用的是SDL2,则可以使用此函数:
它返回一级缓存线大小的字节数。 在x86_64计算机中,运行以下代码段:
生产
我知道我有点晚了,但只是给未来的访客添加信息。 SDL文档目前说返回的数字是以KB为单位的,但实际上是以字节为单位的。 |
![]() |
6
6
在Windows平台上: 从 http://blogs.msdn.com/oldnewthing/archive/2009/12/08/9933836.aspx
|
![]() |
7
4
ARMV6及以上
例如,来自 Cortexâ¢-A8 Technical Reference Manual :
不要假设arm处理器有一个缓存(显然,有些可以在没有缓存的情况下配置)。确定它的标准方法是通过
|
![]() |
8
2
您也可以通过测量一些时间来尝试以编程的方式完成。显然,它并不总是像cpuid等那样精确,但它更便于移植。阿特拉斯在它的配置阶段,你可能想看看它: |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |