Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Identifying Performance Issues

Introduction

This document details processes which can be used to identify performance issues.

Performance Test Results

The Qt Extended documentation includes performance test results for released versions of Qt Extended on several devices. This data may help establish performance expectations for Qt Extended.

Valgrind

Valgrind is a tool which profiles applications by running code under a simulated x86 CPU. Valgrind outputs highly detailed information which can be helpful in identifying performance issues.

Valgrind cannot be used on non-x86 embedded devices.

Process

The process for using valgrind is as follows:

  1. Build Qt Extended and Qt/E for desktop in release mode adding the options -g and -O2 to the specification file for RELEASE. The specification file(s) to modify depend on the release of Qt Extended being used, that is:
  2. Qtopia / Qt Extended Version 4.x modify qmake.conf
  3. Run using:
        bin/runqtopia -qpe bin/worldtime -runmode callgrind -- --dump-every-bb=500000
  4. To profile all applications:
        bin/runqtopia -runmode callgrind -- --trace-children=yes
  5. Ctrl-C to exit the application after startup
  6. kcachegrind &

Checking Memory Usage

valgrind can provide valuable information as follows:

  • For a breakdown of memory usage in html and to provide a graph in postscript format run:
        bin/runqtopia -runmode massif -- --format=html
  • To check memory accesses for initialisation, overruns, and double frees:
        bin/runqtopia -runmode memcheck

Things to Note

  1. Ensure View->Cycle Detection is off otherwise data will not display correctly.
  2. When determining performance measures use the following as a guide:
    • There are approximately 10,000,000 instructions every second on 200MHz ARM device.

      For example, language program startup time is 6s, however with callgrind the number of total instructions is 60,000,000.

    • Run callgrind on the desktop ,identify the problem and resolve.
    • Run callgrind again if the total instructions have reduced to 40,000,000 (20,000,000)
    • Estimated improvement on 200Mhz device is:
          20/10 = 2 seconds

    Note: How was the estimate of 10M instructions/sec was determined?

  3. it is known from callgrind that 60M instructions are executed on startup.
  4. it is known that the time taken to start was 6 seconds.

Therefore, 60M / 6s = 10M instructions/second.

It is difficult to obtain accurate values as other factors effect results so when measuring startup times on device, repeat it a number of times and take the average value.

Timestamped Logs

Qt Extended contains many logs which can be enabled or disabled at runtime. Timestamps can be enabled on these log messages to help determine where time is being spent.

Process

Enable timestamps by modifying the Log2.conf log settings file. This process is documented here. A format string should be set which contains the %t specifier for timestamps. For example, write the following to $HOME/Settings/Trolltech/Log2.conf :

    [MessageHandler]
    Format = %t %p %n: %s

Enable any qLog categories relevant to the code of interest.

Results

Using the above log format results in log messages like the following:

    ...
    606 2563 qpe: Input :  Loading IM:  "qdockedkeyboard"
    611 2569 mediaserver: begin timestamped log messages
    613 2563 qpe: Input :  DockedKeyboard Instatiated.
    613 2563 qpe: Input :  Docking input widget for  "DockedKeyboard"
    614 2563 qpe: Input :  Loading IM:  "qkeyboard"
    618 2563 qpe: Input :  Loading IM:  "qpredictivekeyboard"
    625 2563 qpe: Input :  Docking input widget for  "PredictiveKeyboard"
    ...
    735 2563 qpe: Component :  Creating callScreen
    735 2563 qpe: QtopiaServer :  Server widget mapping:  "CallScreen" -> "Themed"
    739 2563 qpe: Component :  Created callScreen
    ...

The timestamp at the beginning of each log message can be used to determine how much time certain tasks take, while the PID (process identifier) and process name allow log messages from separate processes to be separated. In the above example it can be seen that loading the "qpredictivekeyboard" input method takes 7 milliseconds and creating the call screen takes 4 milliseconds.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 94
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 45
  4. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  5. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 6
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
Page suivante

Le Qt Quarterly au hasard

Logo

Conserver la réactivité de l'IHM

Qt Quarterly est la revue trimestrielle proposée par Nokia et à destination des développeurs Qt. Ces articles d'une grande qualité technique sont rédigés par des experts Qt. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt qtextended4.4
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web