高级编程:非临时内存存储、数据预取与多线程技术
在编程领域,为了提升程序性能,我们可以采用多种技术手段,如非临时内存存储、数据预取以及多线程处理等。下面将详细介绍这些技术及其应用。
1. 非临时内存存储
从内存缓存的角度来看,数据可分为临时数据和非临时数据。临时数据是指在短时间内被多次访问的值,例如程序循环执行期间多次引用的数组或数据结构元素,以及程序的指令字节。非临时数据则是指只被访问一次且不会立即复用的值,许多 SIMD 处理算法的目标数组通常包含非临时数据。区分临时数据和非临时数据非常重要,因为如果处理器的内存缓存中包含过多的非临时数据,处理器性能往往会下降,这种情况通常被称为缓存污染。理想情况下,处理器的内存缓存只应包含临时数据,因为缓存只使用一次的项意义不大。
以下是一个示例代码(Ch16_02),展示了非临时存储指令 vmovntps 的使用,并将其性能与标准的 vmovaps 指令进行了比较。
//------------------------------------------------
// Ch16_02.cpp
//------------------------------------------------
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <random>
#include "Ch16_02.h"
#includ
超级会员免费看
订阅专栏 解锁全文
211

被折叠的 条评论
为什么被折叠?



