Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa Benchmark

CodeIgniter posiada klasę Benchmark, która zawsze jest załadowana. Klasa pozwala na pomiar czasu pomiędzy dwoma markerami ustawionymi w kodzie.

Uwaga: Ta klasa jest inicjalizowana automatycznie, nie ma więc potrzeby robienia tego samodzielnie.

Klasa Benchmark startuje zawsze w momencie, kiedy uruchamiany jest framework - natomiast kończy swoje działanie zaraz przed zwróceniem ostatecznych danych do przeglądarki. Tym samym, pozwala na bardzo dokładne przedstawienie czasu wykonywania całej aplikacji.

Spis treści

Używanie klasy Benchmark

Klasy Benchmark możesz używać w kontrolerach, widokach lub modelach. Używa się jej w ten sposób:

  1. Oznacz punkt początkowy
  2. Oznacz punkt końcowy
  3. Uruchom funkcję, która obliczy ile czasu ułynęło pomiędzy punktami, aby zobaczyć wyniki

Oto przykładowy kawałek kodu:

$this->benchmark->mark('code_start');

// w tym miejscu wykonywany jest Twój kod

$this->benchmark->mark('code_end');

echo $this->benchmark->elapsed_time('code_start', 'code_end');

Uwaga: Słowa "code_start" i "code_end" są dowolne. Są to po prostu słowa użyte aby oznaczyć dwa punkty. Możesz użyć słów jakich chcesz oraz ustawić wiele punktów. Spójrz na ten przykład:

$this->benchmark->mark('dog');

// w tym miejscu znajduje się kod

$this->benchmark->mark('cat');

// w tym miejscu znajduje się kolejny blok kodu

$this->benchmark->mark('bird');

echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');

Punkty z benchmarku dostępne w profilerze

Jeśli chcesz żeby Twoje benchmarki były dostępne z profilera, wszystkie Twoje punkty muszą tworzyć pary, a w każdej z nich nazwa danego punktu musi się kończyć suffixem _start i _end. Reszta nazwy dla danej pary znaczników musi być taka sama. Przykład:

$this->benchmark->mark('my_mark_start');

// w tym miejscu znajduje się kod...

$this->benchmark->mark('my_mark_end');

$this->benchmark->mark('another_mark_start');

// w tym miejscu znajduje się kolejny blok kodu...

$this->benchmark->mark('another_mark_end');

Po więcej informacji zapraszamy na stronę profilera.

Wyświetlanie całkowitego czasu wykonywania

Jeśli chciałbyś wyświetlić całkowity czas wykonywania od momentu, kiedy CodeIgniter zostanie uruchomiony, do momentu zwrócenia ostatecznych danych do przeglądarki, wystarczy że umieścisz poniższy kod w widoku:

<?php echo $this->benchmark->elapsed_time();?>

Zauważyłeś chyba, że to ta sama funkcja, której używaliśmy w przykładach powyżej, aby obliczyć czas jaki upłynął pomiędzy dwoma punktami, z tym wyjątkiem, że nie używa ona żadnego parametru. Kiedy nie podamy parametru dla funkcji, CodeIgniter kończy pomiar dopiero przed samym zwróceniem danych do przeglądarki. Nie ważne w którym miejscu wywołasz tę funkcję, czas będzie liczony do samego końca.

Alternatywnym sposobem aby wyświetlić całkowity czas wykonywania, w plikach widoku jest użycie pseudo-zmiennej, jeśli nie preferujesz użycia czystego kodu PHP:

{elapsed_time}

Uwaga: Jeśli chcesz dokonać pomiaru czegokolwiek tylko w kontrolerze, musisz ustawić własne punkty start/end.

Wyświetlanie zużycia pamięci

Jeśli Twoja instalacja PHP jest skonfigurowana z parametrem --enable-memory-limit, możesz wyświetlić ilość zużytej pamięci przez całą aplikację, za pomocą następującego kodu umieszczonego w pliku widoku:

<?php echo $this->benchmark->memory_usage();?>

Uwaga: Ta funkcja może być użyta tylko w Twoich plikach widoku. Zużycie pamięci, będzie odzwierciedlało całkowitą pamięć, użytą przez całą aplikację.

Alternatywnym sposobem na wyświetlenie zużycia pamięci w Twoich plikach widoku, jest użycie pseudo-zmiennej, jeśli nie preferujesz użycia czystego kodu PHP:

{memory_usage}