Ako funguje Debugger::timer(‚parameter‘)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Čamo
Člen | 798
+
0
-

Vitajte a čítajte:
Potreboval by som dnes použiť pri svojich experimentoch s Nette Debugger::timer(‚x‘). V dokumentácii to vyzerá úplne primitívne, ale tie výpisy mi nedávajú logiku. Mám kód:

Debugger::timer('task1');
sleep(2);

Debugger::timer('task2');
sleep(1);

$task1 = Debugger::timer('task1');
$task2 = Debugger::timer('task2');

$this->template->task1 = $task1;
$this->template->task2 = $task2;

No a vypíše mi to cca čísla task1=3 a task2=1
Task2 odmeria správne, ale task1 má vždy hodnotu taks1 + task2.
Takto to má fungovať? Lebo ja som čakal, že dostanem hodnoty jednotlivých úloh a nie ich súčet.
ďakujem za vysvetlenie.

Editoval Čamo (13. 5. 2014 13:32)

Michal Vyšinský
Člen | 608
+
0
-

Tak je to správně.

Čas task1 se měří od prvního do sedméno řádku. Čas task2 se měří od 4. do 8. řádku. To pojmenování timerů je jen pro potřebu měřit více věcí zároveň (tak jak to máš ty). Ale skript jede řádek po řádku.

Resp. máš dvoje stopky:

  • zapneš stopky 1
  • čekáš 2 vteřiny
  • zapneš stopky 2
  • čekáš 1 vteřinu
  • stopneš stopky 1 i stopky 2
  • jaký bude čas na stopkách 1 a jaký na stopkách 2?

Editoval Michal Vyšinský (13. 5. 2014 13:43)

Čamo
Člen | 798
+
0
-

Ten kód z dokumentácie je trochu zavádzajúci. Malo by to byť:

Debugger::timer('task1');
sleep(2);
$task1 = Debugger::timer('task1');

Debugger::timer('task2');
sleep(1);
$task2 = Debugger::timer('task2');

$this->template->task1 = $task1;
$this->template->task2 = $task2;

Editoval Čamo (13. 5. 2014 13:58)

Michal Vyšinský
Člen | 608
+
0
-

Proč? Je tam napsané, že to jsou stopky. Ale klidně můžeš poslat pull request: https://github.com/nette/docs

Čamo
Člen | 798
+
0
-

Je to diskutabilné a na ten môj postup nepotrebujem tie parametre ako som zistil. To je vedľajšie potreboval som to na testovanie kešovania v Nette a to si vyžiada novú tému.
Díky.