#include <ctime>
#include <iostream>>
#define TIMES 10000
int main(int argc, char *argv[])
{
char buf1[1024*1024];
char *buf2 = new char[1024*1024];
auto t = clock();
for(int i = 0; i < TIMES; ++i){
for(int j = 0; j < 1024*1024; ++j){
buf1[j] = j;
}
}
std::cout << "stack write " << clock() - t << std::endl;
t = clock();
for(int i = 0; i < TIMES; ++i){
for(int j = 0; j < 1024*1024; ++j){
buf2[j] = j;
}
}
std::cout<< "heap write " << clock() - t << std::endl;
size_t num = 0;
t = clock();
for(int i = 0; i < TIMES; ++i){
for(int j = 0; j < 1024*1024; ++j){
if(buf1[j])++num;
}
}
std::cout << "stack read " << clock() - t << std::endl;
t = clock();
for(int i = 0; i < TIMES; ++i){
for(int j = 0; j < 1024*1024; ++j){
if(buf2[j])++num;
}
}
std::cout<< "heap read " << clock() - t << std::endl;
}
写速度:
栈 :0
堆:7679(ms)
读速度:
栈 :0
堆:0
测试环境
处理器 AMD Ryzen 5 2600 Six-Core Processor 3.40 GHz
机带 RAM 16.0 GB
系统类型 64 位操作系统, 基于 x64 的处理器