这个问题看看人家专家如何回答的,已经被问过多次了。
举个假想的例子,或许能直观说明:
时间 |---a-------------------------------------------|
启动 |---b---------->|
并行CPU1 |----c--->|
调用系统底层(比如磁盘读写) |--d-->|
并行CPU1底层返回后继续执) |--e-->|
并行CPU2 |----f----------------->|
并行返回调用并最终结束 |---g-->|
这里 elapsed 应该就是 a;user 是 b + c + e + f + g;system 是 d。所以在多核情况下,user 是可能超过 elapsed 值的。
你那个函数当然的第二个好了。