yves.guern Posté(e) le 26 avril 2023 Signaler Posté(e) le 26 avril 2023 Bonjour, Je cherche un moyen d'avoir des temps en ms. Je me suis donc lancé sur os.clock(). Je dois être en train de regarder le doigt alors qu'on me montre la lune ... J'ai fait 2 découvertes: la sortie de cette fonction n'est pas en ms et le coefficient multiplicateur n'est pas constant ???? voici mon code: (le setTimeout est celui de fibaroExtra mais j'ai les même résultats avec des fibaro.sleep() self.Time0=os.time() self.Clock0=os.clock() function QuickApp:main() setTimeout(function() self:main() end,1000) self.ElapsedT=os.time()-self.Time0 self.ElapsedC=os.clock()-self.Clock0 print("Time:"..self.ElapsedT,"Clock:"..self.ElapsedC,'Ratio:'..(self.ElapsedT/self.ElapsedC)) end Avec un setTimeout de 1000 ms j'ai un ratio de 385, qui est déjà une valeur curieuse... [QUICKAPP78]: Time:476 Clock:1.234036 Ratio:385.72618627009 [QUICKAPP78]: Time:477 Clock:1.236577 Ratio:385.74225462709 [QUICKAPP78]: Time:478 Clock:1.239096 Ratio:385.76510617418 [QUICKAPP78]: Time:479 Clock:1.241633 Ratio:385.78227221731 [QUICKAPP78]: Time:480 Clock:1.244157 Ratio:385.8033994102.../... Et là ou cela devient étrange c'est qu'avec un setTimeout de 10000 ms le ratio est grosso modo 10 fois plus grand: [QUICKAPP78]: Time:100 Clock:0.025572 Ratio:3910.5271390583 [QUICKAPP78]: Time:110 Clock:0.028122 Ratio:3911.5283408008 [QUICKAPP78]: Time:120 Clock:0.030621 Ratio:3918.8792005486 [QUICKAPP78]: Time:130 Clock:0.0331 Ratio:3927.4924471299.../... Mes questions sont 'donc' que mesure os.clock? une explication serait que cette horloge n'avance que si la QA n'est pas en attente d'une façon ou d'une autre? Le ratio mesuré serait alors inversement proportionnel au taux d'occupation CPU. et/ou où est mon bug? PS: J'utilise une HC3 en version 5.130.64 et elle fait autre chose que le test exposé ci dessus mais elle est très loin d'être en surcharge ( <10% de CPU moyen,37% de 'ram utilisée') Merci d'avance
jang Posté(e) le 26 avril 2023 Signaler Posté(e) le 26 avril 2023 (modifié) os.time gives seconds in absolute time since 1973... os.clock returns cpu timed used so far by the process (QA or Scene). When the QA starts the os.clock will return 0, and then start to count cpu time used. cpu time used is usually smaller then absolute time (over any measured time interval) Modifié le 27 avril 2023 par jang
yves.guern Posté(e) le 27 avril 2023 Auteur Signaler Posté(e) le 27 avril 2023 Hi Jang, ok that sound as somthing that explains was I get! So os.clock()-T0 only gives you the Real elapsed time if your code does not contain any sleep or posted event to wake you up... I was trying to measure response time of a TCP connection . Thanks!
Messages recommandés