GAJDAW


MOJE KSIĄŻKI

Książka pt. Git. Recipes
Książka pt. Git. Rozproszony system kontroli wersji
Książka pt. PhpStorm Starter
Książka pt. Symfony w przykładach
Książka pt. GIMP. Praktyczne projekty. Wydanie II
Książka pt. PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
Książka pt. PHP. Praktyczne projekty

PROGRAMY

1 2 3 4 5 6


Mierzenie czasu wykonania fragmentów skryptów PHP

Włodzimierz Gajda

5. Kilka miejsc pomiaru

Mierzenie czasu wykonania kilku fragmentów przedstawię na przykładzie skryptu, który:

Treść skryptu jest przedstawiona na listingu 4. (W przykładzie tym sortowanie jest zbędne - dodałem je wyłącznie w celu zwiększenia liczby punktów pomiaru czasu wykonania.

<?php

$prefix = '/^s/i';

$p = file('wyrazy.txt');

sort($p);

$wynik = array();
foreach ($p as $linia) {
    if (preg_match($prefix, $linia)) {
        $wynik[] = $linia;
    };
}

$w = implode('', $wynik);

file_put_contents('tmp.txt', $w);

Listing 4. Skrypt, w którym dodamy mierzenie czasu wykonania kilku fragmentów

Punkty mierzenia czasu wykonania dodajemy metodą setMarker() klasy Benchmark_Timer. Jej parametrem jest nazwa punktu.

W celu zmierzenia czasu:

w skrypcie z listingu 4 dodajemy wywołania setMarker():

$p = file('wyrazy.txt');
$timer->setMarker('Wczytywanie');


sort($p);
$timer->setMarker('Sortowanie');

...
$timer->setMarker('Wybieranie');

$w = implode('', $wynik);
$timer->setMarker('Sklejanie');

file_put_contents('tmp.txt', $w);
$timer->setMarker('Zapis');

Otrzymamy skrypt przedstawiony na listingu 5. Po jego wykonaniu ujrzymy wyniki takie, jak na rysunku 2.

require 'Benchmark/Timer.php';


$timer = new Benchmark_Timer();
$timer->start();

$prefix = '/^s/i';

$p = file('wyrazy.txt');

$timer->setMarker('Wczytywanie');

sort($p);
$timer->setMarker('Sortowanie');

$wynik = array();


foreach ($p as $linia) {
    if (preg_match($prefix, $linia)) {
        $wynik[] = $linia;
    };
}

$timer->setMarker('Wybieranie');

$w = implode('', $wynik);

$timer->setMarker('Sklejanie');

file_put_contents('tmp.txt', $w);

$timer->setMarker('Zapis');

$timer->stop();
$timer->display();

Listing 5. Skrypt z listingu 4 po dodaniu kilku punktów pomiaru

Rysunek 2. Pomiar czasu wykonania kilku fragmentów skryptu


Reklama

Szkolenia z Zend Framework 2.0


1 2 3 4 5 6