2011-11-21 75 views
5

我正在改進使用Boost Graph Library和boost::bimap的程序的性能。分析顯示,大部分時間都花費在內存分配和重新分配上。使圖庫的adjacency_list類使用boost::fast_pool_allocator顯着提高了性能。剩下的大量內存分配發生在boost::bimap,所以我想試試在那裏使用自定義分配器。 documentation說你可以指定分配器作爲bimap的最後一個模板參數,但是它沒有說明分配器本身的模板參數應該是什麼類型。例如,對於類型XY,在在boost :: bimap中使用自定義分配器

boost::bimap<set_of<X>, set_of<Y>, boost::fast_pool_allocator<Z> > 

什麼應該Z填寫?

+0

我強烈建議不要使用boost:bimap。直接使用帶兩個索引的boost多索引容器比使用bimap的代碼更清晰。 – James

+0

@Autopulated:謝謝 - 下次我會考慮這個選擇,否則我會試試bimap。 –

回答

3

我相信答案是對於Z,你應該填寫std::pair<X,Y>。這個工作在我的情況,但我想在這裏發佈,因爲

  • 它不是從文檔
  • 加速代碼是不是快讀
  • 谷歌搜索是沒有好處顯而易見
  • 和其他人可能有用評論(例如,我還沒有測試這是否取決於bimap的左側視圖或右側視圖)
+0

+1雖然,有用的知識。 – James

相關問題