Performance problém s LinkGeneratorem

Panthera
Člen | 20
+
0
-

Ahoj,

tvořím generování sitemapy a používám linkGenerator. Jedná se o ~500.000 URL adres. Setkal jsem s menším performance problémem – když generuji více stránek pro 1 Presenter tak se začně časem zpomalovat – rapidně.

Při generování ~ 170.000 URL adres ze stejného presenteru, vždy jen s jinými parametry ( např. ID ) začně doba generování stoupat z 0.004s až na 0.01s a více.

Kód použitý k měření:

$start = microtime(true);
$link = $linkGenerator->link($method, array_merge([$key => $id], $param));
$this->times[] = microtime(true) - $start;

a po 5.000 vygenerovaných URL:

private function debugger(){
	$sum = 0;
	foreach($this->times as $time) {
		$sum += $time;
	}
	echo 'Total: '.$sum. ' | ' . 'Avg:' . $sum/5000 . PHP_EOL;
	$this->times = [];
}
David Matějka
Moderator | 6445
+
0
-

ahoj, nemáš nějaký vlastní router, případně nějaký route filtry, které by to mohly způsobovat?

Panthera
Člen | 20
+
0
-

Ahoj, mám vlastní RouterFactory a není nejlépe napsaný. Takže nejspíš bude způsobovat nějaké zpomalení, ale zajímá mě, proč se to zpomalení zvyšuje ? Cache je na routeru disabled.

Zpomalení nastává v moment, kdy dlouhodobě generuješ pro 1 presenter, ale když se potom změní, tak se zpomalení zase „restartuje“ a pomalu se zvyšuje od znovu.

Editoval Panthera (26. 5. 2020 18:24)

David Matějka
Moderator | 6445
+
0
-

tak první krok je zjistit, zda za to může tvůj RouterFactory nebo Nette Router. vrať si z RouterFactory nějakou jednoduchou, obecnou routu a zkus provést benchmark.

Panthera
Člen | 20
+
0
-

Prohnal jsem to tedy benchmarkem. Nemám ale porovnání s Nette Routerem, který není upravený.

Total: 24.166112661362 | Avg: 0.0024166112661362
Total: 27.114696502686 | Avg: 0.0027114696502686
Total: 32.449974536896 | Avg: 0.0032449974536896
Total: 35.902869462967 | Avg: 0.0035902869462967
Total: 39.400074720383 | Avg: 0.0039400074720383
Total: 44.430842161179 | Avg: 0.0044430842161179
Total: 47.370249748230 | Avg: 0.004737024974823
Total: 52.039067029953 | Avg: 0.0052039067029953
Total: 52.743878841400 | Avg: 0.00527438788414
Total: 61.820369005203 | Avg: 0.0061820369005203
Total: 63.670969009399 | Avg: 0.0063670969009399
Total: 63.769243001938 | Avg: 0.0063769243001938
Total: 66.196248054504 | Avg: 0.0066196248054504
Total: 73.848680019379 | Avg: 0.0073848680019379
Total: 74.895998239517 | Avg: 0.0074895998239517
Total: 76.934317111969 | Avg: 0.0076934317111969
Total: 82.522260427475 | Avg: 0.0082522260427475
Total: 86.252726078033 | Avg: 0.0086252726078033
Total: 90.604304790497 | Avg: 0.0090604304790497
Total: 100.64327192307 | Avg: 0.010064327192307
Total: 112.98652029037 | Avg: 0.011298652029037
Total: 119.63632798195 | Avg: 0.011963632798195
Total: 117.03907704353 | Avg: 0.011703907704353
Total: 115.08650612831 | Avg: 0.011508650612831
Total: 129.64268565178 | Avg: 0.012964268565178
Panthera
Člen | 20
+
0
-

Panthera napsal(a):

Prohnal jsem to tedy benchmarkem. Nemám ale porovnání s Nette Routerem, který není upravený.

Total: 24.166112661362 | Avg: 0.0024166112661362
Total: 27.114696502686 | Avg: 0.0027114696502686
Total: 32.449974536896 | Avg: 0.0032449974536896
Total: 35.902869462967 | Avg: 0.0035902869462967
Total: 39.400074720383 | Avg: 0.0039400074720383
Total: 44.430842161179 | Avg: 0.0044430842161179
Total: 47.370249748230 | Avg: 0.004737024974823
Total: 52.039067029953 | Avg: 0.0052039067029953
Total: 52.743878841400 | Avg: 0.00527438788414
Total: 61.820369005203 | Avg: 0.0061820369005203
Total: 63.670969009399 | Avg: 0.0063670969009399
Total: 63.769243001938 | Avg: 0.0063769243001938
Total: 66.196248054504 | Avg: 0.0066196248054504
Total: 73.848680019379 | Avg: 0.0073848680019379
Total: 74.895998239517 | Avg: 0.0074895998239517
Total: 76.934317111969 | Avg: 0.0076934317111969
Total: 82.522260427475 | Avg: 0.0082522260427475
Total: 86.252726078033 | Avg: 0.0086252726078033
Total: 90.604304790497 | Avg: 0.0090604304790497
Total: 100.64327192307 | Avg: 0.010064327192307
Total: 112.98652029037 | Avg: 0.011298652029037
Total: 119.63632798195 | Avg: 0.011963632798195
Total: 117.03907704353 | Avg: 0.011703907704353
Total: 115.08650612831 | Avg: 0.011508650612831
Total: 129.64268565178 | Avg: 0.012964268565178

Řádek = 10.000 stejných odkazů.