2010-04-01 15 views
8

Xin vui lòng tư vấn về điểm chuẩn được sử dụng để kiểm tra một cấp phát C và C++? Điểm chuẩn thoả mãn một trong những khía cạnh sau đây được coi:Điểm chuẩn được sử dụng để kiểm tra một cấp phát C và C++?

  1. Speed ​​
  2. Phân mảnh
  3. Concurrency

Cảm ơn!

+0

Bạn muốn thử nghiệm tốc độ, tốc độ, phân đoạn vv nào? –

+0

Tôi đã chỉnh sửa theo đề xuất của bạn. Cảm ơn. – Viet

Trả lời

4

Nếu bạn hỏi về người cấp phát chung cho chương trình C/C++ thì tôi đã tìm thấy bài báo này Hoard: A Scalable Memory Allocator for Multithreaded Applications xem xét câu hỏi này. Đây là trích dẫn từ tài liệu này

Hiện chưa có bộ tiêu chuẩn nào để đánh giá phân bổ đa luồng. Chúng tôi biết về không có điểm chuẩn nào cụ thể nhấn mạnh hiệu suất đa luồng của máy chủ các ứng dụng như máy chủ web 1 và người quản lý cơ sở dữ liệu. Chúng tôi chọn tiêu chuẩn được mô tả trong các giấy tờ khác và khác xuất bản (điểm chuẩn Larson từ Larson và Krishnan [22] và điểm chuẩn shbench từ MicroQuill, Inc [26]), hai ứng dụng đa luồng mà bao gồm các tiêu chuẩn (BEMengine [7] và barnes-hut [1, 2]) và đã viết một số các tiêu chuẩn của riêng chúng tôi để nhấn mạnh các khía cạnh khác nhau về phân bổ bộ nhớ hiệu suất (threadtest, active-false, passive-false).

Bài báo này sắp lỗi thời. Tuy nhiên tôi đã thấy gần đây một cấp phát cho HP-UX (MallocNextGen) và HP cũng không thể đảm bảo rằng nó là tốt cho tất cả các ứng dụng có thể. Nó nói:

Công cụ phân bổ mới thường là để cải thiện hiệu suất của ứng dụng. Tuy nhiên, có thể có một số ứng dụng mà hiệu suất có thể bị suy giảm. Do đó người dùng nên chuẩn cho các ứng dụng của họ bằng bộ nhớ mặc định cấp phát trong libc và với trình phân bổ trong libmallocng trước khi sử dụng trình cấp phát mới trong môi trường sản xuất .

Vì tốc độ và đồng thời trải nghiệm của riêng tôi là bạn phải đo lường hiệu suất của chương trình của riêng mình để so sánh hai người phân bổ khác nhau. Nếu chúng ta nói về Linux, bạn có thể sử dụng LD_PRELOAD để tải các trình phân bổ khác nhau.

+0

+1. Vâng, nếu không có tiêu chuẩn chuẩn nào, vậy chúng ta nên cảm nhận và giải thích kết quả trên nền tảng nào? – Viet

+0

Theo tôi hiểu một ý tưởng là đo lường hiệu suất ứng dụng của riêng bạn. Mặt khác, bạn có thể chọn một tập hợp các chương trình thực và các bài kiểm tra riêng để so sánh các trình phân bổ. –

5

Bạn có thể tải xuống nedmalloc và thử so sánh người cấp phát của mình với nó. Nó có một thử nghiệm gọi là test.c với mã nguồn, mà bạn có thể viết lại theo phân bổ của bạn.

+0

+1 Cảm ơn AraK! – Viet

5

Tôi đã thử nghiệm một vài bộ phân bổ bản thân cách đây vài năm và kinh nghiệm của tôi là kết quả tất cả phụ thuộc vào loại thử nghiệm.Nếu bạn muốn viết một số tiêu chuẩn cho mình, hãy xem xét các tình huống sau đây:

  • phân bổ rất nhiều ký ức về một kích thước duy nhất, sau đó giải phóng tất cả
  • phân bổ rất nhiều ký ức về kích cỡ khác nhau, sau đó giải phóng tất cả
  • chỉ phân bổ một vài khối bộ nhớ, giải phóng chúng và lặp lại vòng lặp này nhiều lần (lặp lại cho các khối có kích thước giống nhau và các khối có kích thước khác nhau)
  • phân bổ nhiều bộ nhớ có kích thước khác nhau, một nửa miễn phí phân bổ), sau đó phân bổ và bộ nhớ miễn phí trong vòng lặp
  • sử dụng hai bài để cấp phát bộ nhớ song song
  • sử dụng ba, bốn, năm, ... đề để cấp phát bộ nhớ song song

Bạn sẽ nhận thấy rằng kết quả sẽ khác nhau cho mỗi thử nghiệm. Những người phân phát rất giỏi trong một tình huống, có thể xấu trong các tình huống khác.

Trong thực tế, điều này có nghĩa là tốt nhất nên kiểm tra nó trong ứng dụng của bạn, trong một tình huống trực tiếp/thực tế.

+0

+1 có vẻ hay là Patrick. – Viet

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