Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++.pdf

(133 KB) Pobierz
29.11.2017
Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++
Jak używać funkcji QueryPerformanceCounter do czasu
kodu w języku Visual C++
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia
maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły
tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy
Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze
są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla
których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości,
błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości
przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Wyświetl oryginalny artykuł w języku angielskim:
815668
Wersja programu Microsoft Visual C# .NET niniejszego artykułu dla
306979
.
Wersja tego artykułu do programu Microsoft Visual Basic .NET można zobaczyć
306978
.
W tym artykule odnosi się do następującej przestrzeni nazw biblioteki klas systemu Microsoft.NET
Framework:
System
W TYM ZADANIU
WPROWADZENIE
Budowanie demonstracyjnej aplikacji, a następnie uruchom aplikację demonstracji
Rozwiązywanie problemów
ODWOŁANIA
https://support.microsoft.com/pl-pl/help/815668/how-to-use-the-queryperformancecounter-function-to-time-code-in-visual
1/6
29.11.2017
Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++
WPROWADZENIE
W tym artykule opisano sposób użycia funkcji QueryPerformanceCounter do czasu kod aplikacji. Po
czasie kod aplikacji zidentyfikować wąskie gardła wydajności, chcesz użyć najwyższej czasomierza
rozdzielczość, który system ma do zaoferowania.
Powrót do początku
Budowanie demonstracyjnej aplikacji, a następnie uruchom aplikację
demonstracji
1. Uruchom program Microsoft Visual Studio .NET lub Microsoft Visual Studio 2005.
2. W menu plik wskaż polecenie
Nowy, a następnie kliknij polecenie Projekt.
3. W programie Microsoft Visual C++ .NET 2002 wykonaj następujące kroki:
a. W obszarze Project Typeskliknij Projektów Visual C++.
b. W obszarze
Szablony, kliknij przycisk
Zarządzanych aplikacji C++.
W programie Visual C++ .NET 2003 wykonaj następujące kroki:
a. W obszarze Project Typeskliknij Projektów Visual C++.
b. W obszarze
Szablony, kliknij przycisk
Aplikacja konsoli (.NET).
W programie Visual C++ 2005 wykonaj następujące kroki:
a. W obszarze Typy projektówkliknij przycisk Visual C++.
b. W obszarze
Szablony, kliknij przycisk
Aplikacja konsoli środowiska CLR.
4. W polu Nazwa wpisz
CodeTimer.
5. W polu Lokalizacja wpisz
C:\Test, a następnie kliknij przycisk OK.
6. W oknie Solution Explorer kliknij dwukrotnie plik CodeTimer.cppw folderze plików
źródłowych.
7. Dodaj następujący kod po
#include "stdafx.h"
wiersza:
https://support.microsoft.com/pl-pl/help/815668/how-to-use-the-queryperformancecounter-function-to-time-code-in-visual
2/6
29.11.2017
Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++
#include <tchar.h>
#include <windows.h>
8. Zastąp kod w funkcji _tmain następujący kod:
__int64 ctr1 = 0, ctr2 = 0, freq = 0;
int acc = 0, i = 0;
// Start timing the code.
if (QueryPerformanceCounter((LARGE_INTEGER *)&ctr1)!= 0)
{
// Code segment is being timed.
for (i=0; i<100; i++) acc++;
// Finish timing the code.
QueryPerformanceCounter((LARGE_INTEGER *)&ctr2);
Console::WriteLine("Start Value: {0}",ctr1.ToString());
Console::WriteLine("End Value: {0}",ctr2.ToString());
QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
Console::WriteLine(S"QueryPerformanceCounter minimum resolution: 1/
{0} Seconds.",freq.ToString());
// In Visual Studio 2005, this line should be changed to: Console::W
riteLine("QueryPerformanceCounter minimum resolution: 1/{0} Second
s.",freq.ToString());
Console::WriteLine("100 Increment time: {0} seconds.",((ctr2 - ctr1)
* 1.0 / freq).ToString());
}
else
{
DWORD dwError = GetLastError();
Console::WriteLine(S"Error value = {0}",dwError.ToString());// In Vi
sual Studio 2005, this line should be changed to: Console::WriteLine
("Error value = {0}",dwError.ToString());
}
// Make the console window wait.
Console::WriteLine();
Console::Write("Press ENTER to finish.");
Console::Read();
return 0;
Uwaga Należy dodać opcję kompilatora obsługi środowiska wykonawczego języka wspólnego
(/ CLR: oldsyntax) w programie Visual C++ 2005 pomyślnie skompilować powyższy kod
przykładowy. Aby dodać opcję kompilatora obsługi środowiska wykonawczego języka
https://support.microsoft.com/pl-pl/help/815668/how-to-use-the-queryperformancecounter-function-to-time-code-in-visual
3/6
29.11.2017
Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++
wspólnego w programie Visual C++ 2005, wykonaj następujące kroki:
a. Kliknij Projekt, a następnie kliknij przycisk < Nazwaprojektuwłaściwości >.
Uwaga: < NazwaProjektu > jest symbolem zastępczym dla nazwy projektu.
b. Rozwiń Właściwości konfiguracji, a następnie kliknij Ogólne.
c. Kliknij, aby zaznaczyć Common Language Runtime Support, Old Syntax (/ CLR:
oldsyntax) obsługuje aparatu plików wykonywalnych języka wspólnego projektu
ustawienia w okienku po prawej stronie, kliknij przycisk Zastosuj, a następnie kliknij
przycisk OK.
Aby uzyskać więcej informacji na temat aparatu plików wykonywalnych języka wspólnego
obsługuje opcję kompilatora, odwiedź następującą witrynę firmy Microsoft w sieci Web:
/ CLR (kompilacja wspólne środowiska wykonawczego języka)
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
9. Zapisz aplikację. Naciśnij kombinację klawiszy CTRL + F5, aby skompilować i uruchomić
aplikację.
Okno konsoli wyświetla dane wyjściowe podobne do poniższego kodu:
Start Value: 192244814693193
End Value: 192244814694677
QueryPerformanceCounter minimum resolution: 1/1263460000 Seconds.
100 Increment time: 1.17455241954633E-06 seconds.
Press ENTER to finish.
10. Naciśnij klawisz ENTER, aby zatrzymać aplikację i zamknąć okno konsoli.
Powrót do początku
Rozwiązywanie problemów
Można wykorzystać następujące metody do rozwiązywania problemów podczas rozwiązywania kod
aplikacji:
Wywołanie interfejsu API mogą nie działać w niektórych okolicznościach. Sprawdź wartość, a
następnie dostosować kodu aplikacji, aby upewnić się, że otrzymujesz prawidłowe wyniki.
Aby uzyskać najlepsze wyniki należy przetestować kod aplikacji wiele razy. Podczas testowania
kodu aplikacji, upewnij się, że żadne inne aplikacje i inne procesy serwera są uruchomione.
https://support.microsoft.com/pl-pl/help/815668/how-to-use-the-queryperformancecounter-function-to-time-code-in-visual
4/6
29.11.2017
Jak używać funkcji QueryPerformanceCounter do czasu kodu w języku Visual C++
Działalność w innych wątków i inne procesy mogą wpływać na procent czasu, jaki system
zużywa w aplikacji docelowej.
Powrót do początku
Powiązane artykuły
Aby uzyskać dodatkowe informacje dotyczące funkcji QueryPerformanceCounter odwiedź
następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms886788.aspx
Aby uzyskać dodatkowe informacje dotyczące funkcji QueryPerformanceFrequency odwiedź
następującą witrynę MSDN w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms886789.aspx
Aby uzyskać dodatkowe informacje dotyczące funkcji timeGetTime odwiedź następującą witrynę
MSDN w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms713418.aspx
Aby uzyskać dodatkowe informacje dotyczące funkcji GetTickCount odwiedź następującą witrynę
MSDN w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms724408.aspx
Powrót do początku
Właściwości
Identyfikator artykułu: 815668 — ostatni przegląd: 01.04.2017 — zmiana: 2
https://support.microsoft.com/pl-pl/help/815668/how-to-use-the-queryperformancecounter-function-to-time-code-in-visual
5/6
Zgłoś jeśli naruszono regulamin