hbe
Janvier 2, 2024, 12:55
1
Hello,
J’ai remarqué quelques lenteurs lorsque j’essaye de récupérer un commande par son identifiant:
LogLightGroup::debug('Start construct sensor - get cmdId ' . microtime());
$cmd = cmd::byId($cmdId);
LogLightGroup::debug('Start construct sensor - got cmd ' . microtime());
Voici les logs que j’obtiens:
Start construct sensor - get cmdId 0.11846100 1704199639
Start construct sensor - got cmd 0.54253000 1704199639
cela prend grosso modo 0.4s pour récupérer la cmd.
Je suis étonné car en regardant le core jeedom cela paraît être une bête requete SQL derrière.
Quelqu’un aurait une idée de comment je pourrais optimiser cela ?
Merci pour l’aide
Loic
Janvier 2, 2024, 1:06
2
Bonjour
Si tu le fais sur une commande d’un autre plugin tu as le même soucis ?
hbe
Janvier 2, 2024, 1:13
3
Avant j’attaiquais une cmd du plugin ZigbeeLinker.
Je viens de tester avec une commande du plugin Z-Waze
Start construct sensor - get cmdId 0.77796200 1704201041
Start construct sensor - got cmd 0.81175500 1704201041
C’est effectivement plus rapide …
Une idée de ce qui pourrais causer cela ?
Bien à toi et merci pour l’aide
Loic
Janvier 2, 2024, 1:51
4
Peut être une fonction pré/post quelques part dans ta classe
Bad
Janvier 2, 2024, 7:12
5
Hello,
Dans tests, tu LOGes les réponses, et ça, ça peut fausser le résultat.
Etant donné que ça m’inquiétait, j’ai aussi fais des tests en SSH sur mon Jeedom de dev (VM) :
CPU : 2 vCPU (i5-10500T CPU @ 2.30GHz)
Charge : 0.04 - 0.09 - 0.07
Mémoire disponible : 18 % (Total 1971 Mo)
Version PHP : 7.4.33
bad@jeedev:~$ php -a
Interactive mode enabled
php > require_once '/var/www/html/core/php/core.inc.php';
php > $t=microtime(true); $cmd=cmd::byId(44); echo 1000*(microtime(true)-$t);
12.547969818115
php > $t=microtime(true); $cmd=cmd::byId(44); echo 1000*(microtime(true)-$t);
0.15687942504883
php > $t=microtime(true); $cmd=cmd::byId(44); echo 1000*(microtime(true)-$t);
0.22697448730469
php > $t=microtime(true); $cmd=cmd::byId('44'); echo 1000*(microtime(true)-$t);
0.1990795135498
php > $t=microtime(true); $cmd=cmd::byId('9130'); echo 1000*(microtime(true)-$t);
1.3549327850342
php > $t=microtime(true); $cmd=cmd::byId(7754); echo 1000*(microtime(true)-$t);
2.1939277648926
php > $t=microtime(true); $cmd=cmd::byId(7755); echo 1000*(microtime(true)-$t);
0.45204162597656
php > $t=microtime(true); $cmd=cmd::byId(9134); echo 1000*(microtime(true)-$t);
0.17309188842773
php > $t=microtime(true); $cmd=cmd::byId(9137); echo 1000*(microtime(true)-$t);
0.21100044250488
php > $t=microtime(true); cmd::byId(9136); echo 1000*(microtime(true)-$t);
0.19598007202148
Comme tu le vois, au pire (toute première requête) j’ai obtenu 12ms, c’est très loin de tes ~400ms
Je pense qu’il faut que tu nous en dises plus sur le système que lequel tu fais tes tests.
Bad