• boost::bind时候注意性能问题


    原文地址:http://hi.baidu.com/hpagent/blog/item/471b7d92dc8ac39ca977a4dc.html

    测试一下,看看例子

    #include <iostream>
    #include <string>
    #include "boost/bind.hpp"
    using namespace std;
    class tracer {
    public:  
     tracer() 
        {    std::cout << "tracer::tracer()\n";  }  
     tracer(const tracer& other)
     {    std::cout << "tracer::tracer(const tracer& other)\n";  }
     tracer& operator=(const tracer& other)
     {    std::cout <<      "tracer& tracer::operator=(const tracer& other)\n";  
     return *this; 
     } 
     ~tracer() 
     {    std::cout << "tracer::~tracer()\n";  }  
     void print(const std::string& s) const
     {    std::cout << s << '\n';  }
    };
    int main(void)
    {
     {

        tracer t;
      // boost::bind(&tracer::print,t,_1)(string("this is a test"));//这样是用的拷贝构造函数,而且发生了很多次,很消耗资源,1
      // boost::bind(&tracer::print,boost::ref(t),_1)(string("this is a second test"));//这里没有发生,全是引用,2

          boost::bind(&tracer::print,&t,_1)(string("this is a second test")); ////////////////3
     }
       system("PAUSE");
    }

     

    首先运行第一个绑定器,结果非常不满意:


    这么多拷贝,很是浪费资源,于是乎,我们可以利用后面两个绑定器,来看看结果:


    这样看起来是不是很节省资源呢?

    最后两条结果是一样的,但是第一个是引用,第二个是利用的指针,不要混淆了!!!!!!!!!!!!!!!!!!!!!!

  • 相关阅读:
    MySql
    Docker
    达观数据
    Python面试题
    用Python构造ARP请求、扫描、欺骗
    git上传简单的命令行分析
    vue2自定义指令的作用
    自定义指令详解 vue
    文档打印 js
    通过Export2Zip实现表格内容下载成为excel文件
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2129626.html
Copyright © 2020-2023  润新知