Page 1 sur 1
calcul durée de script
Publié : 20 mai 2023, 14:02
par pierrotori
Bonjour
questions toute bête que je n'arrive pas à faire ou comprendre
Code : Tout sélectionner
local Time = require('Time')
begin = Time()
..... programme
local Time = require('Time')
local millis = Time() -- current time
dz.log(begin.milliseconds, dz.LOG_DEBUG)
dz.log(millis.milliseconds, dz.LOG_DEBUG)
dz.log('Durée:'..begin.compare(millis).milliseconds, dz.LOG_DEBUG)
et j'ai toujours 0 d'écart
2023-05-20 15:42:29.723 Status: dzVents: Debug: TEST v1.0: 557
2023-05-20 15:42:29.724 Status: dzVents: Debug: TEST v1.0: 557
2023-05-20 15:42:29.724 Status: dzVents: Debug: TEST v1.0: Durée:0
Comment fait t'on pour réactualiser la date heure ?
Re: calcul durée de script
Publié : 20 mai 2023, 15:48
par Keros
Je viens de déplacer ton sujet dans la section script.
Tu ne peux pas le faire de cette manière, car tout le code est exécuté en un bloc et non ligne par lignes : tu n'as donc qu'une seule info de temps.
Regarde les
customsEvents, tu devrais pouvoir faire ton script en deux temps
Pour être sûr de voir quelque chose, il faudrait presque le faire en 3 temps : tu enregistres le temps, tu lances ton script et tu analyses la durée.
Re: calcul durée de script
Publié : 20 mai 2023, 15:51
par boum
L'objet Time de dzVents a l'air de n'être mis à jour qu'à chaque invocation du script.
os.clock() * 1000 devrait marcher.
Re: calcul durée de script
Publié : 20 mai 2023, 21:40
par pierrotori
merci ca refresh mieux
2023-05-20 21:37:13.882 Status: dzVents: Info: TEST v1.0: ============== TEST ==================
2023-05-20 21:37:13.882 Status: dzVents: Debug: TEST v1.0: Déclenchement CustomEvents
2023-05-20 21:37:13.882 Status: dzVents: Debug: TEST v1.0: -1696834.66
2023-05-20 21:37:13.882 Status: dzVents: Debug: TEST v1.0: -1696834.325
2023-05-20 21:37:13.883 Status: dzVents: Debug: TEST v1.0: 0.33499999996275
2023-05-20 21:37:13.884 Status: dzVents: Info: TEST v1.0: ------ Finished t_test.lua
Mais si je fais 884-882 =2 et la j'obtiens 0,33, je reste encore perplexe devant ce résultat !
Re: calcul durée de script
Publié : 20 mai 2023, 21:59
par pierrotori
@keros en effet le fait que ça fonctionne en bloque, je laisse tomber, c'était en mode debug je voulais connaître la durée d'execution, merci pour ton explication
En effet je pourrais contourner le pb en customevent
Re: calcul durée de script
Publié : 21 mai 2023, 00:40
par boum
Oups, j'avais mal regardé la doc.
The os.clock function returns the number of seconds of CPU time for the program.
C'est donc normal que l'intervalle de temps reporté soit inférieur au temps réel. La fonction retourne le temps CPU depuis le début du programme. En gros pendant les 2ms de temps réel, le processus du script a tourné 0,33ms sur le CPU. Pas très utile pour faire des mesures.
calcul durée de script
Publié : 21 mai 2023, 09:54
par pierrotori
donc la solution serait d'appeler la date système. voir le post
https://www.domoticz.com/forum/viewtopi ... 47#p303247
Code : Tout sélectionner
execute = function(dz, item)
function osCommand(cmd)
-- dz.log('Executing Command: ' .. cmd,dz.LOG_DEBUG)
local fileHandle = assert(io.popen(cmd))
local commandOutput = assert(fileHandle:read('*a'))
local returnTable = {fileHandle:close()}
-- dz.log('ReturnCode: ' .. returnTable[3], dz.LOG_DEBUG)
-- dz.log('commandOutput:' .. commandOutput, dz.LOG_DEBUG)
return commandOutput
end
local begin = osCommand('date +%s%3N|tr -d "\n"')
dz.log('============== TEST ==================', dz.LOG_INFO)
....
local millis = osCommand('date +%s%3N|tr -d "\n"')
dz.log(millis-begin, dz.LOG_DEBUG)
dz.log('============== TEST ==================', dz.LOG_INFO)
ce qui donne
Code : Tout sélectionner
2023-05-21 09:44:43.113 Status: dzVents: Info: TEST v1.0: ------ Start external script: t_test.lua: Custom event: "t_test"
2023-05-21 09:44:43.123 Status: dzVents: Info: TEST v1.0: ============== TEST ==================
2023-05-21 09:44:43.124 Status: dzVents: Debug: TEST v1.0: Déclenchement CustomEvents
2023-05-21 09:44:43.134 Status: dzVents: Debug: TEST v1.0: 10.0
2023-05-21 09:44:43.135 Status: dzVents: Info: TEST v1.0: ------ Finished t_test.lua
peut être l'améliorer en utilisant la fonction io.tmpfile () ?
Comment fait on pour détecter que l'on a activé le mode LOG_DEBUG ?