显然,优化缓存使用肯定会提高我的程序效率。令人惊讶的是,我没有看到有太多的编程语言实际上具有这样的特性。所以我的问题是:
发布于 2010-12-05 08:33:52
这只是一份不合算的名单。
概念
编程语言构造
编译器已经为您完成了一些工作。例如,密切相关的函数组(例如,可能在连续的序列中调用)将被编译成二进制指令,然后彼此存储在一起,以便它们驻留在相同的4KB页面块中。发展商根本没有办法手动处理这些细节。
对于本机编译语言,局部变量存储在堆栈上,最接近当前堆栈位置的区域可能被缓存。如果从堆栈中分配了一个大变量(几个KBs或更多的变量),CPU可能不得不从缓存中排除其他东西以腾出空间。另一方面,如果非常频繁地使用大型变量,则可以对堆栈进行分配。
发布于 2010-12-05 05:29:02
这里没有琐碎的答案。在多处理系统(即任何现代操作系统)中,您不能对虚拟内存的状态做很多假设。不过,您可以对数据结构进行一些一般性的观察。散列技术可能允许您在数据和存储之间开发更可靠的关联,而树之类的数据结构则倾向于使用降低caching...BUT有效性的偏移,将所有这些都与一个巨大的caveat...profiling结合起来--一种技术相对于另一种技术的好处将是极其困难的,并且对您自己的体系结构和内存层次结构具有特定的好处。
这里的最短答案是对于“中间开发人员”,您最好使用经过良好测试的库,这些库清楚地说明了性能界限,并且对内存消耗模式有很好的理解。试图优化特定硬件平台上的缓存,对于最困难的问题来说,似乎是痛苦的最后手段。
https://softwareengineering.stackexchange.com/questions/23838
复制相似问题