数据和代码
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有同样的优化点。
网友评论