转自:https://juejin.cn/post/6844903564720996365
1.互斥与读写
一个常见的误区是,认为在读多写少的情况下,rwlock的性能一定要比mutex高。- 实际上,rwlock由于区分读锁和写锁,每次加锁时都要做额外的逻辑处理(如区分读锁和写锁、避免写锁“饥饿”等等),单纯从性能上来讲是要低于更为简单的mutex的;
- 但是,rwlock由于读锁可重入,所以实际上是提升了并行性,在读多写少的情况下可以降低时延。
- 对于mutex,user+sys基本等于real,可见其基本没有带来什么并行性;
- 而rwlock的user时间就要长于real,可见内层循环部分的代码,是有一定的并行性的。可重入性能充分利用了线程在IO等待的时间提高了并行性。
2.time命令
https://blog.csdn.net/baidu_35692628/article/details/77387827
real 0m0.895s user 0m2.752s sys 0m0.664s
程序执行时加上time能够粗略统计程序执行过程中的耗时。通常会有三个值real time, user time和sys time.
- real time:程序从开始到结束所经历的时间,也就是用户所感受到的时间。包括当前程序CPU的用时和所有延迟程序执行的因素的耗时总和(比如其他程序耗时,等待I/O完成耗时等)。
- user time:程序执行过程中在用户空间(user space)中所花费的所有时间,即程序用户模式下的CPU耗时。
- sys time:程序执行过程中内核空间(kernel space)中所花费的时间,即程序在内核调用中的CPU耗时。
关系:
- 当前进程的实际CPU耗时= user time + sys time
- 单线程情况下real/user/sys关系:real time = 当前进程的CPU耗时 + 其他因素耗时,cpu耗时如上,real time > 当前进程的CPU耗时
- 多核多线程情况下real/user/sys关系:不同线程可以并行执行,导致user + sys的时间可能大于real的时间。cpu耗时如上,real time < 当前进程的CPU耗时。
标签:real,sys,读写,CPU,学习,耗时,user,time,性能 From: https://www.cnblogs.com/BlueBlueSea/p/17206588.html