Gần đây, chúng tôi đã thực hiện tác vụ ngược lại. Ứng dụng của chúng tôi là một chương trình máy chủ C++ đa nền tảng và nó được xây dựng trên Windows với VS 2008 (x86) và trên HP-UX ia64 và Linux với gcc 4.3. Trên mọi nền tảng, chúng tôi đã sử dụng STLport 5.1.7 làm thư viện STL và Boost 1.38.
Để so sánh hiệu suất một thời gian trước, chúng tôi cũng đã xây dựng ứng dụng mà không cần STLport và sau đó chúng tôi đo hiệu suất.
Sau đó trên Windows, hiệu suất trở nên tốt hơn một chút. Vì vậy, chúng tôi đã chọn ngừng sử dụng STLport với VS 2008 và sử dụng thư viện STL mặc định VS 2008.
Trên HP-UX ia64 có hiệu suất giảm 20%. Caliper (trình biên tập HP-UX) cho thấy rằng các bài tập chuỗi mất nhiều thời gian hơn. Và bên trong việc gán chuỗi trong thư viện STL mặc định của gcc có các lệnh gọi tới pthread_mutex_unock. Theo như tôi biết pthread_mutex_lock/pthread_mutex_unlock được sử dụng vì thư viện STL mặc định của gcc sử dụng các chuỗi COW. Trong ứng dụng của chúng ta, chúng ta thực hiện rất nhiều phép gán chuỗi và kết quả là các chuỗi COW mà chúng ta có được hiệu suất tồi tệ hơn. Vì vậy, chúng tôi vẫn sử dụng STLPort trên HP-UX với gcc.
Nguồn
2010-06-04 12:15:05
Đến đây với cùng một vấn đề. Trên thực tế xem xét rằng trong VS2010 bạn không có bản đồ bộ băm và tất cả các công cụ khác được giới thiệu vào năm 2005-2007 từ TR1, sự khác biệt có thể là của O (1) so với O (N) .... – ntg