################################################################################
  Kodowanie Windows-1250, koniec wiersza CR+LF, test: Za gl ja
  Profiler - Przyrzd do pomiarw czasu i wydajnoci
  Copyleft (C) 2007 Adam Sawicki
  Licencja: GNU LGPL
  Kontakt: mailto:sawickiap@poczta.onet.pl , http://regedit.gamedev.pl/
################################################################################


Wstp
================================================================================

Profiler to prosta klasa do pomiaru czasu rnych operacji, ktra uatwia
znajdowanie miejsc w kodzie powodujcych najwiksze opnienia.

Klasa Profiler to podstawowa klasa do pomiaru. Przechowuje hierarchi obiektw
klasy ProfilerItem. Mona tworzy jej obiekt samemu lub skorzysta z domylnego 
w zmiennej g_Profiler.


Pomiar
================================================================================

Zbieranie statystyk opiera si na wielokrotnym powtarzaniu pomiarw
(automatycznie wycigana jest rednia) z uyciem jednej z tych metod:

- Metod Begin i End klasy Profiler
- Tworzenia obiektw klasy Profile
- Wygodnego makra PROFILE_GUARD

Przykad:

void Operacja1()
{
	Wait(11);
}

void Operacja2()
{
	{
		PROFILE_GUARD("Pod-operacja 1");
		Wait(23);
	}
	{
		PROFILE_GUARD("Pod-operacja 2");
		Wait(10);
	}
}

void Test()
{
	for (uint i = 0; i < 10; i++)
	{
		{
			PROFILE_GUARD("Operacja 1");
			Operacja1();
		}
		{
			PROFILE_GUARD("Operacja 2");
			Operacja2();
		}
	}
}


Wyniki
================================================================================

Do wynikw pomiaru mona si dosta za pomoc:

- Bezporedni dostp do drzewa obiektw klasy ProfilerItem, za pomoc metody
  Profiler::GetRootItem.
- Pobranie acucha z penym wynikiem za pomoc metody Profiler::FormatString.

Przykad:

	string s;
	common::g_Profiler.FormatString(&s);
	std::cout << s << std::endl;

Dla powyszego kodu wynik wyglda tak:

Operacja 1 : 14.92 ms (10)
Operacja 2 : 46.8442 ms (10)
  Pod-operacja 1 : 31.2242 ms (10)
  Pod-operacja 2 : 15.4256 ms (10)
