2011-07-04 31 views
6

Tôi đang làm việc trên Trò chơi dành cho thiết bị di động cho một số nền tảng (Android, iOS và một số thậm chí có thể là một số loại bàn điều khiển trong tương lai).google :: dense_hash_map vs std :: tr1 :: unordered_map?

Tôi đang cố gắng quyết định có sử dụng tr1::unordered_map hoặc google::dense_hash_map để truy xuất họa tiết từ Trình quản lý tài nguyên (để sử dụng OpenGL sau này). Thông thường điều này có thể xảy ra một vài lần mỗi giây (N mỗi khung hình, nơi game của tôi đang chạy ở ~ 60 fps)

cân nhắc là:

  • Hiệu suất (bộ nhớ và CPU khôn ngoan)
  • Portability

Bất kỳ ý tưởng hoặc đề xuất nào đều được chào đón.

+0

Tôi quan tâm tại sao bạn phải sử dụng bản đồ băm? Tôi không biết bất cứ điều gì về nền tảng bạn đang sử dụng, nhưng nó chỉ âm thanh lạ cho mục đích bạn mô tả. – Rookie

+0

Bằng cách này để quản lý kết cấu không phải là hiếm, Ogre3D sử dụng một cách tiếp cận tương tự (http://www.ogre3d.org/docs/api/html/classOgre_1_1TextureManager.html) – Goles

+2

Không thể đưa ra câu trả lời hay cho điều này câu hỏi. Có lẽ nó sẽ không tạo ra sự khác biệt nào cả. Tại sao bạn không đo lường nó và xem? –

Trả lời

1

Trong C++ Dự án tôi phát triển, tôi đã tự hỏi một cái gì đó tương tự: cái nào là tốt nhất, tr1:unordered_map, boost::unordered_map hoặc std::map? Tôi đã kết thúc tuyên bố một typedef, kiểm soát tại biên soạn:

#ifdef UnorderedMapBoost 
typedef boost::unordered_map<cell_key, Cell> cell_map; 
#else 
#ifdef UnorderedMapTR1 
typedef std::tr1::unordered_map<cell_key, Cell> cell_map; 
#else 
typedef std::map<cell_key, Cell> cell_map; 
#endif // #ifdef UnorderedMapTR1 
#endif // #ifdef UnorderedMapBoost 

sau đó tôi có thể kiểm soát tại thời gian biên dịch mà người ta sử dụng và cấu hình nó. Trong trường hợp của tôi, tính di động đã trở nên quan trọng hơn, vì vậy tôi thường sử dụng std::map.

1

đi với STL cho các vùng chứa tiêu chuẩn. Chúng có hành vi dự đoán được và có thể được sử dụng liên tục trong các thuật toán/biến lặp của STL. Bạn cũng được STL đảm bảo hiệu suất.

Điều này cũng phải đảm bảo tính di động. Hầu hết các trình biên dịch đều có tiêu chuẩn mới được triển khai.

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