4
我想通过执行以下代码清除L1,L2和L3缓存50次。但是,如果通过输入sudo ./a.out
来运行它,它会变得非常缓慢。另一方面,如果我只写./a.out
它将几乎立即完成执行。我不明白这个原因,因为我没有在终端发生任何错误。为什么这个C++程序需要很长时间才能完成,如果你以root身份运行它?
#include <iostream>
#include <cstdlib>
#include <vector>
#include <fstream>
#include <unistd.h>
using namespace std;
void clear_cache(){
sync();
std::ofstream ofs("/proc/sys/vm/drop_caches");
ofs << "3" << std::endl;
sync();
}
int main() {
for(int i = 0; i < 50; i++)
clear_cache();
return 0;
};
定义 “非常缓慢”。也许sudo版本实际上设置了它,而另一个则忽略了你的请求。首先这似乎是一件奇怪的事情。你的目标是什么?如果以root身份运行它,则可以使用 – tadman 2015-02-11 14:57:25
〜10秒。 – jsguy 2015-02-11 14:58:04
'sudo'其他什么都需要至少十秒钟?这个操作需要多长时间才能通过shell完成?您通常可以使用'time'命令进行检查。 – tadman 2015-02-11 14:58:33