2009-09-26 40 views
5

Tôi có hai chương trình, một chương trình trong C++, một chương trình khác trong trình biên dịch. Tôi muốn so sánh dung lượng bộ nhớ mà họ sử dụng khi chạy tương ứng. Tôi có thể làm cái này như thế nào?Làm thế nào để bạn nhận được bao nhiêu bộ nhớ một chương trình sử dụng?

Tôi đang thử nghiệm trên Windows, nhưng tôi cũng muốn biết cách thực hiện trên Linux.

+0

Trên nền tảng nào? – derobert

Trả lời

4

Chạy chương trình trong một trình bao. Mở một shell khác và chạy lệnh 'top'. nó sẽ liệt kê các tiến trình đang chạy và rất nhiều bộ nhớ mà chúng tiêu thụ. bạn có thể, tôi đoán, thăm dò ý kiến ​​/ proc/yourprocessid/stat để xem có bao nhiêu bộ nhớ nó đang sử dụng theo thời gian.

+0

hmm, điều này khá thú vị, nó giống như lệnh ps nhưng năng động. mặc dù các chương trình của tôi khá nhỏ nên tôi không nghĩ phương pháp cụ thể này sẽ hoạt động. – user176121

+0

oh nếu đây là một chương trình ngắn. chỉ cần đặt nó trong vòng lặp trong khi bạn đang xem nó trong 'top' cho i trong {1..3}; làm ps; làm xong; chạy ps 3 lần.Hoặc nếu bạn có thể chỉnh sửa chương trình của bạn, hãy thêm một giấc ngủ vào cuối để bạn có thời gian để làm 'ps' trước khi chương trình kết thúc – discovlad

+0

Thông thường ở trên cùng tôi lấy cột 'RES' (kích thước thường trú) trừ cột 'SHR' (kích thước bộ nhớ dùng chung). Trong hầu hết các trường hợp, cung cấp một dấu hiệu tốt cho thấy chương trình của bạn thực sự đang sử dụng bao nhiêu. – Benjamin

0

Phụ thuộc vào hệ điều hành của bạn - bạn sẽ mong muốn có các công cụ để cho bạn biết bộ nhớ đã tiêu thụ khi các ứng dụng đang chạy.

Cố gắng suy ra câu trả lời bằng cách kiểm tra mã sẽ rất khó, chạy ứng dụng, sử dụng chẩn đoán nền tảng của bạn.

0

Tùy thuộc vào kích thước của chương trình, điều này có thể gần như không khả thi.

Nếu chúng không quá lớn, bạn có thể xem lượng bộ nhớ mà chúng phân bổ; Ví dụ, một int sẽ mất 4 byte, một char sẽ mất 1 byte, vv Hội là rất minh bạch trong bao nhiêu bộ nhớ nó được sử dụng, ngay cả trên một máy x86. Cpp gần như là minh bạch, miễn là bạn trung thành theo dõi việc tạo đối tượng và hủy bỏ bộ nhớ/phân bổ.

Nếu chương trình rất lớn, bạn sẽ cần phải sử dụng các công cụ cụ thể để theo dõi/sử dụng bộ nhớ lược tả, như GlowCode (http://www.glowcode.com/summary.htm).

3

Trình quản lý tác vụ Windows có thể cho bạn biết mức sử dụng bộ nhớ của từng quy trình. Tôi đoán bạn có thể sử dụng Valgrind thay vào đó, nhưng tôi không thấy điểm đó. Trên Linux, sử dụng Valgrind hoặc ps.

+0

Trong tab Process Manager Processes, bạn có thể sử dụng View-> Select Columns ... để chọn số liệu thống kê sử dụng bộ nhớ bổ sung. – Clifford

0

Trên Windows, bạn có thể sử dụng Trình giám sát hiệu suất của Microsoft để thực hiện. Bắt đầu, chạy, "perfmon". Công cụ này sẽ báo cáo về tất cả các loại thống kê về quy trình và cung cấp đồ thị cho bạn. Nói chung, bạn sẽ quan tâm đến báo cáo về "bộ làm việc riêng tư". Điều này sẽ cho bạn biết bộ nhớ của bạn đã dành bao nhiêu bộ nhớ cho việc sử dụng riêng của nó.

Nếu bạn muốn chỉ sử dụng vùng heap của mình và bạn muốn thực hiện theo chương trình, bạn nên xem xét CRT Debug Heap.

Tôi không chắc chắn về Linux, xin lỗi.

0

Trên Windows, tôi đã tìm thấy Address Space Monitor rất hữu ích, đặc biệt đối với nhìn vào cách phân mảnh bộ nhớ của bạn.

4

Trên Linux, hãy thử valgrind. Đó là một công cụ tuyệt vời với quá nhiều tính năng cho những con người hoàn toàn hiểu được. Hãy xem valgrind 's massif.

+0

Nó rất hữu ích, nhưng khối lượng phân tích bộ nhớ heap chỉ theo mặc định. Như chúng ta có thể đọc trên [link] (http://valgrind.org/docs/manual/ms-manual.html): "Theo mặc định, ngăn xếp hồ sơ là tắt vì nó làm chậm Massif xuống rất nhiều. [...] Ngăn xếp hồ sơ có thể được bật bằng tùy chọn --stacks = yes. " – Zaimatsu

5

Trên Windows, bạn có thể sử dụng Trình theo dõi hiệu suất.

sử dụng màn hình Performance

  • Bắt đầu Performance Monitor từ menu Start/Administrative Tools/Hiệu suất

  • Nếu bạn muốn bắt đầu khai thác gỗ:

  • Chọn log hiệu suất và cảnh báo > Tùy chọn Nhật ký Hiện tại ở phía bên trái của trình duyệt.

  • Chọn Cài đặt nhật ký mới.

  • Đặt tên phù hợp cho nhật ký, ví dụ: performance_Server cho Máy chủ

  • Nó sẽ nhắc bạn một menu. Trong các tab “chung”, nhấp vào nút thêm và chọn quy trình bạn muốn theo dõi. (Thay đổi đối tượng hiệu suất để xử lý, cho "chọn bộ đếm từ danh sách" chọn "byte riêng", cho "chọn trường hợp từ danh sách", chọn quá trình bạn muốn theo dõi.) Sau đó nhấp vào Thêm và đóng. Bây giờ thay đổi khoảng thời gian theo yêu cầu trường hợp thử nghiệm. Bây giờ, hãy chuyển đến tab “tệp nhật ký” thay đổi loại tệp nhật ký thành định dạng csv hoặc tsv. Bây giờ áp dụng và nhấn OK.

  • Nếu bạn muốn bắt đầu/ngừng khai thác gỗ:

  • Chọn Đặc biệt đăng nhập của bạn muốn bắt đầu và dừng lại.

  • Trong thanh công cụ phía trên, bạn sẽ thấy nút bắt đầu và dừng.

  • Nếu bạn muốn kiểm tra các nội dung của một tập tin log:

  • Bấm Options/dữ liệu từ ...

  • Chọn tập tin đăng nhập để được xem, nhấn OK

  • Đến màn hình biểu đồ (Xem/Chart)

  • Chọn Edit/Add to biểu đồ

  • Thêm các mục được yêu cầu vào biểu đồ.(Trong trường hợp rò rỉ bộ nhớ được kiểm tra, thì bạn cần xem PrivateBytes của các quy trình và _Tổng số của chúng)

  • Đọc các giá trị từ biểu đồ (Các giá trị Min và Max được hiển thị ở dưới cùng của biểu đồ)

  • Nếu bạn muốn theo dõi chuyển mạng:

  • hiển thị màn hình biểu đồ (Xem/Chart)

  • chọn Edit/Add để đăng nhập và chọn các mục Network Interface \ Bytes Sent Nếu bạn đặt nó trong dl

  • Hoặc Mạng inerface \ Bytes nhận nếu bạn đặt nó trong CRS-PC +

  • Nhấp vào Done

  • bộ nhớ Màn hình sử dụng:

  • Trong menu Start/Programs/Administrative Tools/start chương trình Performance Monitor

  • Nhấp vào nút để mở cửa sổ thêm quy trình

  • Điền vào các lĩnh vực như sau:

  • Object: Process

  • Counter: Bytes tư nhân

  • Instance: một quá trình mà bộ nhớ chiếm đóng cần phải được hiển thị

  • Bấm vào nút Add

  • Lặp lại hai bước cuối cùng cho mỗi quá trình mà bộ nhớ cần được hiển thị

  • Đóng cửa sổ có thêm các quy trình

  • Trên dưới cùng của cửa sổ Performance Monitor, có danh sách các tiến trình đã chọn trước đó.

Làm thế nào để sử dụng dữ liệu đăng nhập

  1. Bây giờ mở file Perfmon_.csv hoặc Perfmon_.tsv sử dụng WordPad hoặc Excel.

Nếu bạn đã mở tệp bằng Excel, sau đó sử dụng tùy chọn Lưu dưới dạng, lưu tệp ở định dạng Microsoft Excel.

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