生活随笔
收集整理的這篇文章主要介紹了
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"); }
?
首先運行第一個綁定器,結果非常不滿意:
? 這么多拷貝,很是浪費資源,于是乎,我們可以利用后面兩個綁定器,來看看結果:
? 這樣看起來是不是很節省資源呢?
最后兩條結果是一樣的,但是第一個是引用,第二個是利用的指針,不要混淆了!!!!!!!!!!!!!!!!!!!!!!
完
轉載于:https://www.cnblogs.com/wangkangluo1/archive/2011/08/06/2129626.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生
總結
以上是生活随笔 為你收集整理的boost::bind时候注意性能问题 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。