Ticket #432 (closed melhoria: fixed)
Otimização de desempenho na leitura de caixas postais grandes
Reported by: | amuller | Owned by: | amuller |
---|---|---|---|
Priority: | média | Milestone: | |
Component: | ExpressoMail | Version: | trunk |
Severity: | Keywords: | desempenho caixas grandes | |
Cc: | WorkGroup: |
Description
Duas otimizações foram colocadas para teste
- A função get_range_msg que busca a mensagem da caixa, passa a buscar somente um offset de mensagens quando esta for do tipo "Todas" pela ordenação de chegada (caso mais comum)
- Colocar requisições da inicialização do expressoMail em paralelo.
Os tempos de inicialização do expressoMail com estas otimizações estão abaixo:
Otimizado:
Caixa pequena 600 msgs
Média 3,6 s
Caixa grande 9 mil msgs
Média 2,7 s
Não otimizado
Caixa pequena 600 msgs
Média 4,3 s
Caixa grande 9 mil msgs
Média 22,4 s
Usando o imacros do firefox. As melhoras acontecem em caixas grandes e redes lentas.
Attachments
Change History
Changed 15 years ago by amuller
-
attachment
expressoMailOtimizado.png
added
comment:3 follow-up: ↓ 4 Changed 15 years ago by wmerlotto
Maravilha, mas como faço para testar esse branch (imagino que contenha ainda as alterações descritas no #429)? No SVN do ExpressoLivre não há nada no branch...
comment:6 Changed 15 years ago by amuller
Foi tentado disparar todas as requisições de inicialização do ExpressoMail? em paralelo. Através de fork, isso para melhorar o tempo de abertura em redes com alta latência.
A empreitada não foi nem sucedida. Por diversos fatores são eles
- a pcntl_fork não é habilitada no apache php-mod por default.
- a comunicação entre os forks é bem complicada (foi feita por arquivo).
Além disso. O tempo de abertura já é bem aceitável. Os arquivos que fazem esta implementação serão anexados como histórico.
Changed 15 years ago by amuller
-
attachment
class.init_functions.inc.php
added
Arquivo init_functions com inicialização paralela
Changed 15 years ago by amuller
-
attachment
main.js
added
Arquivo main.js adaptado para abrir o init_functions
comment:7 follow-up: ↓ 8 Changed 15 years ago by niltonneto
É essencial que as modificações feitas na aplicação não dependam de configurações específicas dos serviços (WebServer?, PHP, etc) para que funcionem corretamente. Comentei isso devido à tentativa sem sucesso de implementar processamento paralelo de requisições AJAX.
comment:8 in reply to: ↑ 7 Changed 15 years ago by amuller
Replying to niltonneto:
É essencial que as modificações feitas na aplicação não dependam de configurações específicas dos serviços (WebServer?, PHP, etc) para que funcionem corretamente. Comentei isso devido à tentativa sem sucesso de implementar processamento paralelo de requisições AJAX.
Compartilho essa preocupação Nilton. Depender de terceiros é um tiro no pé. Por isso que estou implementando algumas coisas usando só funções nativas do PHP, quando possível o mais encapsulado possível.
comment:9 Changed 15 years ago by niltonneto
- Version changed from 1.0 to Trunk (trunk)
Implementado em [812], referente à otimização da função get_lang.
comment:10 follow-up: ↓ 11 Changed 15 years ago by niltonneto
- Summary changed from Otimização de desempenho no branch da versão 1.235 to Otimização de desempenho na leitura de caixas postais grandes
- Milestone changed from Expresso Mail 1.235 to Expresso Mail 1.234
Ficou muito rápido realmente com caixas maiores. Implementado em [828].
comment:11 in reply to: ↑ 10 Changed 15 years ago by wmerlotto
Replying to niltonneto:
Ficou muito rápido realmente com caixas maiores. Implementado em [828].
Sensacional! Muuuuito mais rápido... Valeu!
comment:12 Changed 13 years ago by niltonneto
- Milestone Expresso Mail 1.234 deleted
Milestone Expresso Mail 1.234 deleted
Requisições em paralelo