Tôi đang sử dụng adjacency_list < vecS, vecS, bidirectionalS ...> rộng rãi. Tôi có quá nhiều đồ thị được tải cùng một lúc khiến bộ nhớ trở thành sự cố. Tôi đang thực hiện phân tích chương trình tĩnh và lưu trữ các đồ thị và đồ thị đồ họa của các phân tách nhị phân trong đồ thị tăng cường. Vì vậy, tôi có thể có hàng chục nghìn chức năng == biểu đồ và một đồ họa khổng lồ. Tôi thực sự muốn giảm mức sử dụng bộ nhớ cho các đồ thị của mình trong khi vẫn sử dụng BGL.giảm yêu cầu bộ nhớ cho danh sách kề
Vì đồ thị của tôi là tĩnh sau khi tải và cạnh và số lượng đỉnh được biết trước, tôi thấy tiềm năng lớn để tối ưu hóa. Đối với ví dụ , tôi muốn phân bổ một bộ đệm duy nhất cho tất cả các đỉnh/cạnh của một biểu đồ và để đồ thị chỉ lưu trữ các chỉ mục vào bộ đệm đó.
câu hỏi khác:
1) chi phí bộ nhớ của việc sử dụng thuộc tính đỉnh và cạnh là gì? Tôi có khá nhiều người trong số họ.
2) có thể thuyết phục BGL sử dụng thu nhỏ để phù hợp với thành ngữ không? Theo tôi hiểu, danh sách kề nhau sử dụng push_back để thêm cạnh. Có thể giảm sử dụng bộ nhớ bằng cách hoán đổi véc tơ kết quả với bản sao của chính nó không? Có thể bằng cách sao chép toàn bộ đồ thị ?
3) Có thể sử dụng bộ phân bổ tăng cường pool với BGL không? Theo như như tôi có thể nói với BGL hiện đang thực hiện rất nhiều phân bổ nhỏ - Tôi thực sự muốn tránh điều đó vì lý do không gian và hiệu suất thời gian chạy.
Có ai đã xây dựng phiên bản BGL được tối ưu hóa để sử dụng bộ nhớ không? Tôi có nên thử sử dụng cấu trúc đồ thị hiện có và tăng thêm phân bổ tùy chỉnh hoặc somesuch hoặc thực hiện việc thực hiện của riêng mình và cố gắng giữ giao diện tương thích với BGL để Tôi có thể tiếp tục sử dụng thuật toán của nó?
Trân trọng,
Sören
Nó có thể không phải là câu trả lời mà bạn thích, nhưng khi nói đến byte đếm như chuẩn bị cho một số hack trong một số thư viện boost mà chỉ được sử dụng cho rất ít tác vụ - bạn sẽ nhận được câu trả lời tốt hơn sớm hơn trong Danh sách gửi thư của người dùng nâng cao. Khả năng khác là để đọc nguồn ... –
gimpf