美文网首页
代码性能优化

代码性能优化

作者: gykimo | 来源:发表于2021-01-21 09:02 被阅读0次

数据和代码

https://github.com/gykimo/c_plusplus_optimize

cases

pointerset_vs_valueset(1 vs 2)

传指针还是传值,当值的长度大约一个指针的长度时,传指针效率更高

spinlock_vs_mutex

自旋锁:当保护的区域耗时很短时,比如就是设置一个变量值,那么使用自旋锁更好;因为这样就不用内核层和用户层进行切换,节省了大量的内核时间。
互斥锁:当保护的区域耗时较长时,比如做一些内存方面的操作,这个时候使用互斥锁更好;因为使用自旋锁的话,一个线程处理期间,另外一个线程会一直自旋,占用大量的用户层时间。

stl

map_vs_unordered_map(3 vs 1)

map是有序的,用红黑树实现的,复杂度是o(lgn);
unordered_map是无序的,使用hash实现的,复杂度是o(1);
所以如果需要保存的数据不需要排序,那么使用unordered_map更合适。
同理,set和unordered_set有同样的优化点。

相关文章

网友评论

      本文标题:代码性能优化

      本文链接:https://www.haomeiwen.com/subject/qnwkiktx.html