2010-12-01 13 views
2

Existe-t-il un moyen d'obtenir le temps de fonctionnement de l'application ainsi que le temps de fonctionnement du système?Qt Obtenir la quantité de temps nécessaire pour l'application en cours

Merci d'avance.

+1

Vous pouvez utiliser quelque chose de similaire à '/ proc/uptime' sur les systèmes Linux. Le fichier a deux nombres à virgule flottante qui sont utilisés pour signaler le temps de disponibilité, le temps d'inactivité, etc. Votre programme pourrait écrire un fichier similaire dans '/ proc/(programme-pid)/uptime'. Pour les systèmes Linux, c'est. – vpit3833

+0

plus spécifique? – Pratik

+0

@ vpit3833 Vous ne pouvez pas écrire de nouveaux fichiers dans '/ proc/anything' –

Répondre

0

Sur Windows, vous pouvez simplement calculer en appelant la fonction Winapi pour démarrer le processus datetime.

Plus d'informations vous pouvez trouver à http://www.codeproject.com/KB/threads/ProcessTime.aspx

+1

Je suppose que je pourrais stocker l'heure de la date actuelle lorsque le programme commence à obtenir l'heure actuelle de l'application, mais qu'en est-il du temps de mise en service? – Thomas

+1

@Vous devrez peut-être faire attention avec cette méthode - l'heure de l'horloge murale peut changer, par ex. par l'utilisateur ou les serveurs de temps, etc. – sje397

6

Vous pouvez utiliser la classe QElapsedTimer de Qt 4.7 pour obtenir le temps de fonctionnement de votre application. Cette classe utilisera des horloges monotones si c'est possible.

Créez simplement une instance et appelez le start au début de votre programme. A partir de là, vous pouvez obtenir le nombre de millisecondes votre programme a été en cours d'exécution (ou plus précisément, depuis l'appel à start) en appelant

myElapsedTimer.elapsed() 
0

Sur Linux, vous pouvez utiliser l'appel système times pour vous dire ÉCOULÉ temps processeur. Cela ne comptera pas le temps d'inactivité de votre programme en attente d'entrée, ou l'attente d'une entrée bloquée, ou l'heure à laquelle il a été préempté par d'autres programmes également en cours d'exécution sur le système. (Par conséquent, cela est très bon pour les tests de performance.)