Dicas de otimização para aplicações Qt
-
Author
microsoft-mobile-developer -
Category
Technology
-
view
966 -
download
3
Embed Size (px)
Transcript of Dicas de otimização para aplicações Qt
-
1
Dicas de otimizao para aplicaes Qt e QML.
Copyright 2012 Nokia
-
Introduo
2
Willer Moreira Bacharel em Cincia da Computao - UFAM Desenvolvedor de Software no INdT desde 2006 Projeto PySide Desenvolve aplicaes Qt/QML
Copyright 2012 Nokia
-
TPICOS
3
Porque performance importante
Como melhorar a performance das suas aplicaces
Perguntas
Copyright 2012 Nokia
-
Porque performance importante
4
atrativo para o usurio
Deixa sua aplicao com um aspecto mais profissional
O processo de desenvolvimento da sua aplicao fica
mais eficiente
Interfaces dinmicas
Copyright 2012 Nokia
-
Porque performance importante
5
Qt Everywhere Desktop Plataformas embarcadas com recursos limitados
Nem todas as aplicaes podem tirar vantagem do uso
de mltiplos cores
Copyright 2012 Nokia
-
Como melhorar a performance
6
TOC - Theory of Constraints (ou Teoria das Restries)
Esta teoria baseada na idia de que em qualquer
sistema complexo, existe pelo menos uma restrio
que limita sua habilidade de alcanar o seu objetivo ou
funcionamento pleno. Para alcanar as melhorias
nesse sistema essa restrio deve ser identificada e
resolvida.
Copyright 2012 Nokia
-
Teoria das restries
7
Defina uma meta?: Por exemplo: Esta aplicao deve rodar em 30 FPS
E ento:
(1) Identifique o gargalo (restrio) (2) Decida como explorar esse gargalo (3) Faa as melhorias necessrias (4) Se a meta no foi alcanada, volte para (1) Pronto!
Copyright 2012 Nokia
-
Identificando o gargalo
8
A melhor forma de identificar o gargalo: Ferramentas de profiling
Shark (Mac OS X) Valgrind (X11) Visual Studio Profiler (Windows) QML Performance Monitor
Obs: Sempre faa as medies no modo release.
Copyright 2012 Nokia
-
Identificando o gargalo
9
Quando o gargalo identificado: Verifique se a implementao usada a melhor a
ser usada para essa tarefa Uma vez que a melhor implementao foi escolhida,
voc pode explorar esse gargalo
Design Cdigo fonte Compilao
Copyright 2012 Nokia
-
Explorar o gargalo
10
Dicas gerais: Cache Atrasar um processamento at que ele seja
realmente necessrio Otimizaes de compilao
Tcnicas de Otimizao para o Qt
Escolher sempre o Container correto QVector vs QLinkedList vs QList
Usar implicit data sharing de forma eficiente
Copyright 2012 Nokia
-
QVector vs QLinkedList vs QList
11
QVector Itens so armazenados continuamente na memria Somente um bloco de memria alocado Inseres no inicio e no meio so lentas
Copyright 2012 Nokia
-
QVector vs QLinkedList vs QList
12
QLinkedList Usada para grande quantitade de elementos Tempo constante para inseres e remoes
Copyright 2012 Nokia
-
QVector vs QLinkedList vs QList
13
QList De longe o container mais usado Gera menos cdigo para o executvel Aloca espao no inicio e no fim da estrutura
Copyright 2012 Nokia
-
QVector vs QLinkedList vs QList
14
QList mais fcil de usar e gera menos cdigo
Na maioria dos caso, QList a ideal para se usar.
Se voc s faz append(), use QVector
Se voc deseja tempos constantes de insero e
remoo no meio do array, use QLinkedList
Copyright 2012 Nokia
-
Qt implicit data sharing
15
Maximiza o reuso de objetos e minimiza a cpia
Copyright 2012 Nokia
-
Qt implicit data sharing
16
Objeto somente copiado se for modificado
Copyright 2012 Nokia
-
Qt implicit data sharing
17
Como evitar deep-copy: Use somente operadores e funes const se
possvel Use o foreach com moderao Passar objectos como const sempre um bom
hbito, mesmo quando estiver trabalhando com classes que no usam implicit data sharing
Exemplos?
Copyright 2012 Nokia
-
Qt implicit data sharing
18
Exemplos:
QTransform no usa implicit data sharing
Copyright 2012 Nokia
-
Qt implicit data sharing
19
Acessem o documento Implicitly Shared Classes para
ver a lista completa de classes que usam implicit data
sharing no Qt
http://doc.qt.nokia.com/4.7-snapshot/implicit-
sharing.html
Copyright 2012 Nokia
-
Dicas de Otimizao para QML
20 Copyright 2012 Nokia
-
Dividir e conquistar
21 Copyright 2012 Nokia
-
Dividir e conquistar
22
Dividir a interface da aplicao em mltiplos arquivos
QML
Cada entidade lgica ser um arquivo QML
Pensar em um modo Orientado a Objetos
No usar um arquivo QML gigante
Copyright 2012 Nokia
-
Dividir e conquistar
23
Usar o arquivo main.qml como a interface principal Com diferentes states e transitions Criar mltiplas views (.qml) Importar diretrios contendo outros arquivos .qml
Copyright 2012 Nokia
-
Load e Unload
24 Copyright 2012 Nokia
-
Load e Unload
25
Usar o Loader para controlar o consumo de memria
Carregar somente o mnimo possvel no inicio
Dinamicamente carregar e liberar componentes de UI
Criar componentes novos quando necessrio
Copyright 2012 Nokia
-
Load e Unload
26 Copyright 2012 Nokia
-
Otimizar o uso de Imagens
27 Copyright 2012 Nokia
-
Otimizar o uso de Imagens
28
Diminuir o consumo de memria
Especificar o tamanho exato da imagem
Evitar fazer resize/scaling de imagens no QML
Usar a propriedade smooth com moderao
Carregar imagens grandes em background
(asynchronous=true)
No fazer cache de imagens muito grandes
(cache=false)
Copyright 2012 Nokia
-
Operaes com Strings
29 Copyright 2012 Nokia
-
Operaes com Strings
30
Uso exagerado do operador '+' resulta em mltiplas
alcocaes de memria
Usar StringBuilder sempre que possvel
Definir #define QT_USE_FAST_CONCATENATION #define QT_USE_FAST_OPERATOR_PLUS
Copyright 2012 Nokia
-
Dominar States, Transitions e Animations
31 Copyright 2012 Nokia
-
States, Transitions e Animations
32
Em um Transition, a rea animada deve ser pequena
Animar diferentes itens sequencialmente sempre que
possvel
Evitar usar muitos Timers durante animaes
Evitar fazer operaes com JavaScript durante as
animaes
Usar ScriptAction e StateChandeScript
Copyright 2012 Nokia
-
Seguir sempre as boas prticas de programao
33 Copyright 2012 Nokia
-
Boas prticas
34
Para melhor performance use C++ e no JavaScript
Inserir propriedades sempre no topo das declaraes
de elementos
Criar a lgica da aplicao fora do QML
No sobrepor muitas camadas de elementos QML
Usar Qt i18n para internacionalizao
Copyright 2012 Nokia
-
Links teis
35
QML Performance Monitor http://www.youtube.com/watch?v=XdI9C53uJw8
Valgrind http://valgrind.org/docs/manual/mc-manual.html
QML Performance Guidelines http://doc.qt.nokia.com/4.7/qdeclarativeperformance
.html
Qt Implicit Data Sharing http://doc.qt.nokia.com/4.7-snapshot/implicit-
sharing.html
Qt Performance Tuning Copyright 2012 Nokia
-
Canais de comunicao
36
@nokiadev_brasil http://bit.ly/NokiaDev_Qt_Brasil http://blog.qtlabs.org.br/ [email protected] [email protected]
Copyright 2012 Nokia
-
Perguntas?
Copyright 2012 Nokia
-
Obrigado!
Copyright 2012 Nokia
Slide Number 1Slide Number 2Slide Number 3Slide Number 4Slide Number 5Slide Number 6Slide Number 7Slide Number 8Slide Number 9Slide Number 10Slide Number 11Slide Number 12Slide Number 13Slide Number 14Slide Number 15Slide Number 16Slide Number 17Slide Number 18Slide Number 19Slide Number 20Slide Number 21Slide Number 22Slide Number 23Slide Number 24Slide Number 25Slide Number 26Slide Number 27Slide Number 28Slide Number 29Slide Number 30Slide Number 31Slide Number 32Slide Number 33Slide Number 34Slide Number 35Slide Number 36Slide Number 37Slide Number 38