我测量了Ubuntu上进程的运行时间。该进程有两个线程,即主进程线程和一个子线程,它被主线程杀死并重新生成很多次。它看起来像这样:
main_thread
{
timer=0;
loop(N)
{
clock_gettime(CLOCK_MONOTONIC, &start)
spwan_new_thread();
do_main_thread_work();
join_child_thread()
clock_gettime(CLOCK_MONOTONIC, &end)
time+=end-start
}
print time/N
}
new_tread()
{
do_child_thread_work();
return;
}
运行时结果表明,此进程在两个内核上运行速度比在三个内核上运行速度快一些。我必须提到我使用相同的系统,我只是禁用或启用核心。
两个核心配置比3核心配置快0.4毫秒,我在每个配置上执行了100次执行,以确保它不仅仅是运气。
为什么会这样? (内核调度程序?)
修改
在2个核心上循环平均执行时间:5.92587毫秒 在3个内核上循环平均执行时间:6.36628 ms
我通过使用/ sys / devices / system / cpu / cpu2 / online
等文件来禁用核心