2011-08-21 37 views
5

Để một chương trình có hiệu quả bộ nhớ cache, dữ liệu được sử dụng phải được lưu trữ tuyến tính đúng không?Bộ nhớ cache hiệu quả và BLOB - lần truy cập bộ nhớ cache lược tả/bỏ lỡ

Vì vậy, thay vì phân bổ động, tôi đặt dữ liệu của mình trong một blob bằng cách sử dụng bộ phân bổ tuyến tính. Điều này có đủ để cải thiện hiệu suất không? Tôi nên làm gì để cải thiện hiệu suất bộ nhớ cache nhiều hơn?

Tôi biết rằng câu hỏi này arent cụ thể nhưng tôi không biết làm thế nào để giải thích nó ...

Những chương trình có thể giúp tôi hồ sơ hit cache/bỏ lỡ?

+2

điều gì là đủ/hữu ích/cần thiết để cải thiện hiệu suất, nên được quyết định bằng cách lập hồ sơ, chứ không phải bằng phỏng đoán thuần túy. nếu có một công thức phổ biến, nó sẽ được thực hiện trong thư viện thời gian chạy. – Vlad

+0

Chỉ cần thêm một câu hỏi khác ... Bạn có biết bất kỳ trình thu thập thông tin nào để phát hiện các lần truy cập/lần truy cập bộ nhớ cache để tôi có thể xem có bất kỳ thay đổi nào mà tôi thực hiện đang cải thiện hiệu suất không? –

Trả lời

5

Nếu bạn đang tìm kiếm một hồ sơ cho các cửa sổ, bạn có thể thử AMD's CodeAnalyst hoặc VerySleepy, cả hai đây là miễn phí, AMDs là mạnh hơn của hai tuy nhiên (và hoạt động trên phần cứng intel, nhưng iirc bạn không thể sử dụng phần cứng dựa trên hồ sơ công cụ), nó bao gồm giám sát của những thứ như chi nhánh dự đoán và sử dụng bộ nhớ cache. Profiling là rất tốt, vì nó sẽ cho bạn biết những gì để tối ưu hóa, nhưng bạn không bao giờ biết cách, cho rằng, bạn nên có một cái nhìn tại Agner Fog's optimization manuals kết hợp với Intel's optimization manual (trong đó có rất nhiều trên địa bàn và cachability tối ưu hóa)

3

Nếu bạn sử dụng Linux, bạn có thể sử dụng Valgrind (cụ thể là công cụ lưu trong bộ nhớ cache).

Nếu bạn đang sử dụng Windows thì VS2010 (2008) Phiên bản chuyên nghiệp có trình biên tập tích hợp nhưng Tôi không biết bất kỳ chi tiết nào về cơ sở lược tả bộ đệm ẩn của nó. Ngoài ra còn có Bộ phân tích VTune của Intel (Bộ khuếch đại). Cả hai đều là sản phẩm thương mại, mặc dù tôi nghĩ bạn có thể nhận được bản sao đánh giá 30 ngày.

Một số câu hỏi khác về SO mà có thể giúp đỡ:

+0

Có vẻ tốt nhưng tôi sử dụng Windows ... Có bất kỳ Windows subsitute nào cho Valgrind không? –

+0

@Tiago Costa thật sự là một bummer ... – celavek

0

Trên Linux, bạn có thể sử dụng perf mem để truy cập bộ nhớ mẫu, bao gồm các lần bỏ lỡ theo cách rất chi tiết (bao gồm địa chỉ bỏ lỡ), là described here.

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