读写锁性能学习
2023-09-14 09:11:19 时间
转自: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耗时。
相关文章
- JMeter性能测试介绍学习一
- 【AIX 学习】性能优化--iostat (续)
- 【AIX 学习】性能优化--vmstat
- 【AIX 学习】性能优化--sar
- 【AIX 学习】性能优化--topas
- MySQL性能优化
- JDBC 在性能测试中的应用
- 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
- 【学习总结】性能测试分析
- Linux性能监控文章参考
- http性能测试工具wrk源码学习之开篇
- 【学习总结】性能测试分析
- 机器学习:分类模型性能评估(1):混淆矩阵及其可视化
- Nginx反向代理为什么能够提升服务器性能?
- Oracle性能优化学习笔记之WHERE子句中的连接顺序
- 使用SAP ABAP 事物码 ST12 研究 SAP CRM 产品搜索的性能 - product search性能
- MySQL 性能监控4大指标——第二部分
- Oracle性能优化学习笔记之选择最有效率的表名顺序
- 几种 SAP ABAP OData 服务的性能评估和测试工具介绍试读版
- 2021-10-28 SAP Spartacus SSR 性能方面的一些学习笔记
- iOS 性能优化(一):Improving Your App‘s Performance
- 使用混沌和非线性控制参数来提高哈里斯鹰优化算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)
- 带你了解WDR-GaussDB(DWS) 的性能监测报告
- 基于VGG16深度学习网络的目标识别matlab仿真,并结合ROC指标衡量识别性能
- CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
- 如何学习性能测试?盘点【性能测试】必须弄懂的5大技术点
- Netperf----x86架构openEuler操作系统对网络进行性能测试
- Impala 5、Impala 性能优化
- 从源头开始学习 Java 单例模式:线程安全和性能的双重保障
- PLSQL专项学习之PLSQL Developer Profiler 性能调优使用-篇1