2.7.2 Năng động Sử dụng bộ nhớ
sử dụng bộ nhớ động là một xét nghiệm có giá trị được cung cấp bởi rất nhiều các công cụ thương mại. Như với phạm vi bảo hiểm, nó có thể để cụ bộ nhớ động khai thác phân bổ malloc () và free () trong C và mới và xóa trong C ++ để các thẻ thiết sẽ giúp phát hiện rò rỉ bộ nhớ và vấn đề phân mảnh trong khi chúng đang xảy ra. Điều này là vô cùng thích hợp hơn để đối phó với một hệ thống nonreproducible lock-up mỗi hai hoặc ba tuần một lần. Hình 2-2 cho thấy một công cụ kiểm tra quản lý bộ nhớ như vậy.
Từ Trenches
Hiệu suất thử nghiệm và kiểm tra vùng phủ sóng không hoạt động hoàn toàn riêng biệt. Kiểm tra vùng phủ sóng không chỉ phát hiện ra số lượng mã thử nghiệm của bạn được thực hiện, nó cũng cho phép bạn mã mà không bao giờ được thực hiện (mã chết) mà có thể dễ dàng được loại bỏ khỏi sản phẩm. Tôi nhận thức được một tình huống trong đó một số đội thiết kế đã sửa lại một tập tin lệnh mối liên kết mà ban đầu được viết cho một sản phẩm trước đó. Các tập lệnh làm việc đủ tốt, để không ai làm phiền để loại bỏ một số các thư viện không liên quan mà nó kéo vào. Nó không phải là một vấn đề cho đến khi họ đã có thêm nhiều chức năng hơn cho các sản phẩm nhưng bị giới hạn dung lượng ROM họ có . Như vậy, bạn có thể nhìn thấy thế nào kiểm tra vùng phủ sóng có thể cung cấp cho bạn những manh mối về nơi bạn có thể cắt bỏ mã mà không xuất hiện để được tham gia chương trình. Mặc dù loại bỏ mã chết có thể sẽ không ảnh hưởng đến thời gian thực hiện của mã này, nó chắc chắn sẽ làm cho hình ảnh mã nhỏ hơn. Tôi nói có lẽ là bởi vì trên một số kiến trúc, các mã chết có thể buộc các trình biên dịch để tạo ra nhiều bước nhảy, ngành dài thời gian. Hơn nữa, hình ảnh mã lớn hơn và nhảy thường xuyên hơn chắc chắn có thể ảnh hưởng đến hiệu suất bộ nhớ cache.
Khái niệm, thử nghiệm hiệu suất là đơn giản. Bạn sử dụng các tập tin bản đồ liên kết để
xác định địa chỉ bộ nhớ của các điểm vào và điểm ra của chức năng. Sau đó, bạn xem các bus địa chỉ và ghi lại thời gian bất cứ khi nào bạn có trận địa ở những điểm này. Cuối cùng, bạn kết hợp những điểm bắt đầu với điểm xuất cảnh, tính toán sự khác biệt giữa chúng, và đó là thời gian trôi qua trong các chức năng. Tuy nhiên, giả sử hàm của bạn gọi chức năng khác, trong đó kêu gọi nhiều chức năng hơn. Thời gian trôi qua cho các chức năng bạn đang cố gắng để đo lường là gì? Ngoài ra, nếu ngắt đến trong khi bạn đang ở trong một chức năng, làm thế nào để bạn yếu tố thông tin đó vào phương trình của bạn? May mắn thay, các nhà phát triển công cụ thương mại đã xây dựng trong khả năng để làm sáng tỏ ngay cả những gnarliest của hàm đệ qui.
công cụ phần cứng dựa trên cung cấp một cách hấp dẫn để đo hiệu suất phần mềm. Như với các phép đo vùng phủ sóng, máy phân tích logic có thể được lập trình để nắm bắt các dấu vết trong khoảng thời gian ngẫu nhiên, và các dấu vết dữ liệu bao gồm cả thời gian tem-có thể là hậu xử lý để mang lại thời gian trôi qua giữa điểm ra vào của một chức năng. Một lần nữa, sự báo trước của các phép đo liên tục áp dụng, do đó, các bài kiểm tra có thể phải chạy một thời gian dài để thu thập số liệu thống kê có ý nghĩa.
các công cụ phần cứng được thiết kế chỉ để giám sát đồng thời là một quang phổ của các điểm chức năng nhập cảnh và điểm thoát và sau đó thu thập dữ liệu khoảng thời gian như chức năng khác nhau được nhập vào và đi ra. Trong mọi trường hợp, các công cụ như những cung cấp thông tin rõ ràng về tình trạng hiện tại của phần mềm của bạn như nó thực hiện trong thời gian thực.
phân tích hiệu suất Phần cứng hỗ trợ, như các hình thức khác của phần cứng hỗ trợ
các phép đo dựa trên quan sát hoạt động xe buýt của bộ xử lý, có thể được trả lại kém chính xác địa chỉ trên chip và bộ nhớ cache dữ liệu. Điều này xảy ra bởi vì sự xuất hiện của một địa chỉ trên xe buýt không nhất thiết có nghĩa rằng các hướng dẫn tại địa chỉ đó sẽ được thực hiện tại thời điểm đó, hoặc bất kỳ điểm nào khác trong thời gian. Nó chỉ có nghĩa là địa chỉ được chuyển từ bộ nhớ cache để được hướng dẫn.
Công cụ dựa trên các thiết bị của mã là miễn dịch với các lỗi bộ nhớ cache gây ra nhưng làm giới thiệu một số mức độ xâm nhập vì sự cần thiết phải thêm mã thêm để sản xuất một thẻ quan sát tại điểm vào của chức năng và các điểm xuất cảnh. Tags có thể được phát ra liên tục trong thời gian từ chức năng, ISRs, và hạt nhân RTOS chính nó. Với phần mềm đo lường thích hợp, các nhà thiết kế có thể có được một hình ảnh thực sự của phần mềm hệ thống của họ như thế nào là hành xử trong điều kiện hệ thống tải khác nhau. Đây chính là loại thông tin cần thiết để hiểu được lý do tại sao, ví dụ, một thử nghiệm chức năng có thể bị thất bại.
Từ Trenches
Từ kinh nghiệm cá nhân, những thông tin mà các công cụ này cung cấp một đội ngũ thiết kế, có thể gây ra nhiều sự hoài nghi giữa các kỹ sư. Trong một đánh giá của khách hàng, các công cụ đang được thử nghiệm cho thấy một số lượng đáng kể thời gian đã được chi tiêu trong một đoạn mã mà không ai trong số các kỹ sư của dự án có thể xác định như phần mềm của họ. Sau khi điều tra thêm, nhóm nghiên cứu nhận ra rằng trong quá trình xây dựng đội bóng đã vô tình để lại những chuyển đổi trình biên dịch trên bao gồm tất cả các thông tin gỡ lỗi trong mã biên dịch. Một lần nữa, điều này đã được phát hành mã. Công cụ này có thể cho thấy rằng họ đã dùng 15 phần trăm hiệu suất hit do các mã lỗi được hiện diện trong các phần mềm được phát hành. Tôi khá chắc chắn rằng một số người đứng đầu đã được đưa vào các khối vì điều này, nhưng tôi đã không có mặt để xem các lễ hội.
Điều thú vị là, các nhà sản xuất bán dẫn đang bắt đầu đặt thêm các nguồn tài nguyên trên chip để theo dõi hiệu suất, cũng như mục đích gỡ lỗi . Bộ vi xử lý máy tính để bàn, chẳng hạn như Pentium và AMD của K, được trang bị bộ đếm hiệu suất giám sát; đặc điểm kiến trúc như đang tìm đường vào các thiết bị nhúng là tốt. Các bộ đếm trên chip có thể đếm thời gian trôi qua hoặc thông số hiệu năng khác, chẳng hạn như số lượng truy cập bộ nhớ cache và cache nhớ.
Một ưu điểm khác của tài năng trên chip là chúng có thể được sử dụng trong
kết hợp với các công cụ gỡ lỗi của bạn để tạo ra ngắt khi lỗi điều kiện
xảy ra. Ví dụ, giả sử bạn thiết lập một trong các quầy để đếm xuống không khi một địa chỉ nhất định là cường điệu. Điều này có thể là sự khởi đầu của một hàm. Bộ đếm đếm ngược; nếu nó underflows trước khi nó dừng lại, nó tạo ra một ngắt hoặc ngoại lệ, và chế biến có thể dừng lại bởi vì chức năng mất quá nhiều thời gian. Các lợi thế rõ ràng của các nguồn tài nguyên trên chip được rằng họ sẽ không bị lừa bởi sự hiện diện của cache trên chip và rằng họ không thêm bất kỳ chi phí với thời gian thực thi mã. Nhược điểm là bạn được giới hạn trong những gì bạn có thể đo bằng các chức năng của các nguồn tài nguyên trên chip
đang được dịch, vui lòng đợi..
