Performance problém s LinkGeneratorem
- Panthera
- Člen | 20
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
ahoj, nemáš nějaký vlastní router, případně nějaký route filtry, které by to mohly způsobovat?
- Panthera
- Člen | 20
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
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
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
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ů.