美文网首页
share_ptr拷贝和内存拷贝的性能对比

share_ptr拷贝和内存拷贝的性能对比

作者: gykimo | 来源:发表于2021-01-28 12:24 被阅读0次

    代码:
    https://github.com/gykimo/c_plusplus_optimize/tree/master/shared_ptr_vs_not
    耗时结果:

    [case 1] not_share_ptr_1attrs:
    
    real    0m0.746s
    user    0m0.230s
    sys 0m0.005s
    
    ==========================
    [case 2] not_share_ptr_1000attrs:
    
    real    0m5.798s
    user    0m5.362s
    sys 0m0.023s
    
    ==========================
    [case 3] share_ptr:
    
    real    0m5.422s
    user    0m5.059s
    sys 0m0.018s
    

    说明

    share_ptr除了可以自动管理一个对象的生命周期外,还可以做另外一个事情,如果一个class有一个attr,该class经常被复制构造等,这个时候为了性能考虑,我们不想attr每次也复制构造,所以使用shared_ptr智能指针,让该class的多个对象共用一个attr;
    但是通过上面的测试看,如果attr的长度或者数量较少时,使用shared_ptr性能更差,因为shared_ptr本身也会占用内存,另外,shared_ptr拷贝构造时,还要增加引用计数等,这些都是比较耗时的操作。
    但是如果attr的长度足够长,如not_share_ptr_1000attrs,attr的长度是1000B,那么这个时候拷贝构造shared_ptr比拷贝attr更节省时间,所以这个情况下使用shared_ptr更合适。

    相关文章

      网友评论

          本文标题:share_ptr拷贝和内存拷贝的性能对比

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