2009-09-26 17 views
5

Mam dwa programy, jeden w C++, drugi w asembler. Chcę porównać, ile pamięci używają odpowiednio podczas uruchamiania. Jak mogę to zrobić?Jak uzyskać ile pamięci program używa?

Wykonuję testy w systemie Windows, ale chciałbym również wiedzieć, jak to zrobić w systemie Linux.

+0

Na jakiej platformie? – derobert

Odpowiedz

4

Uruchom program w jednej powłoce. Otwórz kolejną powłokę i uruchom polecenie "top". wyświetli listę uruchomionych procesów i spisze dużo pamięci, którą zużywają. możesz, jak sądzę, odpytać/proc/yourprocessid/stat, aby zobaczyć, ile pamięci używa z czasem.

+0

hmm, to całkiem fajne, jest jak polecenie ps, ale dynamiczne. chociaż moje programy są raczej małe, więc nie sądzę, że ta konkretna metoda zadziała. – user176121

+0

oh, jeśli jest to krótki program. po prostu umieść go w pętli podczas oglądania go w "górnym" dla i w {1..3}; zrobić ps; Gotowe; uruchamia ps 3 razy. Jeśli możesz edytować swój program, dodaj na końcu uśpienie, abyś miał czas na "ps" przed zakończeniem programu. – discovlad

+0

Zwykle w górnej części wybieram kolumnę "RES" (rozmiar rezydentny) minus kolumna "SHR" (wielkość pamięci współdzielonej). W większości przypadków stanowi to dobrą wskazówkę, ile naprawdę wykorzystuje twój program. – Benjamin

0

Zależy od systemu operacyjnego - można by się spodziewać narzędzi do informowania o zużyciu pamięci podczas uruchamiania aplikacji.

Próba wywnioskowania odpowiedzi poprzez sprawdzenie kodu będzie bardzo trudna, uruchom aplikacje, skorzystaj z diagnostyki platformy.

0

W zależności od wielkości programów może to być prawie niemożliwe.

Jeśli nie są bardzo duże, to można zobaczyć, ile pamięci przeznaczy; na przykład int zajmie 4 bajty, char zajmie 1 bajt, itp. Zgromadzenie jest bardzo przejrzyste w ilu pamięci używa, nawet na maszynie x86. Cpp jest prawie tak przejrzyste, o ile wiernie śledzi tworzenie obiektów i niszczenie lub przydzielanie pamięci.

Jeśli program jest ogromny, należy użyć specjalnych narzędzi do śledzenia/profilowania użycia pamięci, takich jak GlowCode (http://www.glowcode.com/summary.htm).

3

Menedżer zadań systemu Windows może pokazać zużycie pamięci dla każdego procesu. Sądzę, że mógłbyś użyć Valgrind, ale nie widzę w tym sensu. W systemie Linux użyj Valgrind lub ps.

+0

Na karcie Procesy menedżera zadań można użyć opcji Widok-> Wybierz kolumny ..., aby wybrać dodatkowe statystyki użycia pamięci. – Clifford

0

W systemie Windows do tego celu można użyć Monitora wydajności firmy Microsoft. Zacznij, uruchom, "perfmon". To narzędzie będzie raportować na temat różnych statystyk dotyczących procesów i dostarczać wykresy dla Ciebie. Ogólnie rzecz biorąc, będziesz zainteresowany raportowaniem o "prywatnym zestawie roboczym". Dzięki temu dowiesz się, ile pamięci proces zarezerwował dla własnego użytku.

Jeśli chcesz po prostu użyć swojego sterty i chcesz zrobić to programowo, powinieneś zajrzeć do CRT Debug Heap.

Nie jestem jednak pewien co do Linuksa, przepraszam.

0

W Windows Znalazłem Address Space Monitor bardzo przydatna, zwłaszcza dla patrzeć jak twoja pamięć jest fragmentaryczne.

4

W systemie Linux spróbuj valgrind. To niesamowite narzędzie ze zbyt wieloma funkcjami, które zwykli śmiertelnicy mogą całkowicie zrozumieć. Spójrz na valgrind 's massif.

+0

Jest to bardzo przydatne, ale masyw domyślnie analizuje pamięć sterty. Jak możemy przeczytać na [link] (http://valgrind.org/docs/manual/ms-manual.html): "Domyślnie profilowanie stosu jest wyłączone, ponieważ znacznie spowalnia masyw. [...] Profilowanie stosu można włączyć za pomocą opcji --stacks = yes. " – Zaimatsu

5

W systemie Windows można użyć Monitora wydajności.

Wykorzystanie monitorować wydajność

  • start Performance Monitor z menu Start/Narzędzia administracyjne/Performance

  • Jeśli chcesz, aby rozpocząć rejestrowanie:

  • Wybierz dziennik wydajności i Sygnalizacja > Bieżąca opcja dziennika po lewej stronie przeglądarki.

  • Wybierz opcję Nowe ustawienia rejestru.

  • Podaj odpowiednią nazwę do dziennika, np. performance_Server dla serwera

  • Pokaże ci jedno menu. W zakładkach "ogólnych" kliknij przycisk Dodaj i wybierz proces, który chcesz monitorować. (Zmień obiekt wydajności do przetworzenia, dla "wybierz liczniki z listy" wybierz "prywatne bajty", dla "wybierz instancje z listy", wybierz proces, który chcesz monitorować.) Następnie kliknij Dodaj i zamknij. Teraz zmień odstęp zgodnie z wymaganiami przypadku testu. Teraz przejdź do zakładki "log files" zmień typ pliku log na format csv lub tsv. Teraz zastosuj i naciśnij OK.

  • Jeśli chcesz, aby rozpocząć/zatrzymać rejestrowanie:

  • wybrać szczególności zalogować chcesz uruchomić i zatrzymać.

  • Na pasku narzędzi powyżej zobaczysz przycisk uruchamiania i zatrzymywania.

  • Jeśli chcesz sprawdzić zawartość pliku dziennika:

  • Click Opcje/dane z ...

  • Wybierz plik dziennika do oglądania, kliknij OK

  • Przejdź do ekran wykresu (Widok/Wykres)

  • Kliknij Edycja/Dodaj do wykresu

  • Dodaj wymagane elementy do wykresu.(W przypadku, gdy należy sprawdzić wyciek pamięci, należy przejrzeć prywatne bajty procesów i ich sumę)

  • Odczytać wartości z wykresu (wartości Min i Max są wyświetlane na dole wykres)

  • Jeśli chcesz monitorować transferu sieciowego:

  • wyświetlić ekran wykres (Widok/Wykres)

  • Kliknij Edycja/Dodaj do logowania, a następnie wybierz pozycje Interfejs sieciowy \ Bajty wysłane Jeśli ustawisz go w dl

  • lub sieć Inerface \ Bajty odebrane jeśli ustawisz go w CRS-PC +

  • Kliknij Gotowe

  • wykorzystanie pamięci Monitor:

  • W menu Start/Programy/Narzędzia administracyjne/początek program Monitor wydajności

  • Kliknij przycisk, aby otworzyć okno z dodanymi procesami.

  • Wypełnij pola w następujący sposób:

  • Przedmiot: Proces

  • Licznik: Private Bytes

  • Instance: proces, którego pamięci zawód muszą być wyświetlane

  • Kliknij na przycisk Dodaj

  • Powtórz ostatnie dwa kroki dla każdego procesu, w którym ma być wyświetlana pamięć

  • Zamknij okno, które dodaje procesy

  • Na dole okna Performance Monitor, znajduje się lista procesów poprzednio wybrany.

Jak wykorzystać zarejestrowane dane

  1. Teraz otwórz plik Perfmon_.csv lub Perfmon_.tsv używając WordPad lub Excel.

Jeśli plik został otwarty przy użyciu programu Excel, a następnie użyj opcji Zapisz jako, zapisz plik w formacie Microsoft Excel.

Powiązane problemy