2011-11-21 37 views
5

Tôi đang làm việc để cải thiện hiệu suất của chương trình sử dụng cả Thư viện đồ thị tăng cường và boost::bimap. Profiling tiết lộ rằng hầu hết thời gian đã được chi tiêu trong phân bổ bộ nhớ và deallocation. Làm cho lớp adjacency_list sử dụng thư viện biểu đồ boost::fast_pool_allocator cải thiện hiệu suất đáng kể. Một đoạn lớn các phân bổ bộ nhớ còn lại xảy ra trong boost::bimap, vì vậy tôi muốn thử nghiệm bằng cách sử dụng một trình phân bổ tùy chỉnh ở đó. documentation cho biết bạn có thể chỉ định trình phân bổ làm tham số mẫu cuối cùng của bimap, nhưng nó không nói loại đối số mẫu nào với chính cấp phát nên là. Ví dụ, đối với các loại XY, trongSử dụng trình phân bổ tùy chỉnh với tăng :: bimap

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

những gì cần được điền vào cho Z?

+0

Tôi khuyên bạn không nên sử dụng tăng: bimap. Sử dụng vùng chứa nhiều chỉ mục tăng cường với hai chỉ mục trực tiếp rõ ràng hơn nhiều so với mã sử dụng bimap. – James

+0

@Autopulated: Cảm ơn bạn - Tôi sẽ xem xét thay thế lần sau nếu không tôi sẽ thử một bimap. –

Trả lời

3

Tôi tin rằng câu trả lời là dành cho Z, bạn nên điền vào std::pair<X,Y>. Điều này làm việc trong trường hợp của tôi, nhưng tôi muốn gửi ở đây vì

  • nó không rõ ràng từ các tài liệu
  • đang Boost là không nhanh chóng để đọc
  • Googling là vô ích
  • và những người khác có thể có hữu ích nhận xét (ví dụ: tôi chưa thử nghiệm nếu điều này phụ thuộc vào quan điểm bên trái hoặc bên phải của bimap là)
+0

+1 mặc dù, kiến ​​thức hữu ích. – James

Các vấn đề liên quan