| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2009 09:44:20
|
Djonatah
JavaGuru
![[Avatar]](/images/avatar/9922aa62eb4eafdcea1bf84537bd4f24.jpg)
Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline
|
Bom dia pessoal, estou com a seguinte situação.
Temos uma api para gerar gráficos (http://big.faceless.org/products/graph) que nativamente salva suas imagens em pdf, svg, png e flash, além de me fornecer a imagem como uma BufferedImage.
Como eu preciso das imagens em JPEG usei o BufferedImage associado a api JAI (https://jai.dev.java.net/).
O problema é que eu preciso criar 20 mil imagens (resolução 300dpi. tamanho - 20cm x 10cm). Esse processo está me tomando cerca de 4h+ (cerca de 75 imagens/min em "best case scenario").
Pergunta - há alguma maneira de eu dar uma melhorada em meu processo (eu sei que não é apenas o armazenamento da imagem que está me tomando tempo, mas é onde eu teria que dar uma melhorada por enquanto).
Aqui vai uma parte de meu código.
Obrigado pelas opiniões.
E uma ótima semana a todos
Abraços
<><
|
--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes
" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2009 09:50:47
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Vou fazer uma perguntinha boba.
É possível você rodar esse processo em uma máquina com vários processadores (um Core2Duo ou um Pentium Dual Core já serve) , e dividir seu trabalho em várias threads (1 por processador, já que o processo é realmente "compute-bound"?)
Você está gerando uma figura de 2,8 megapixel em menos de 1 segundo, incluindo a parte de criar o gráfico, que costuma ser razoavelmente lenta.
Então não parece que dá para melhorar "muito" isso aí.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2009 09:58:07
|
Djonatah
JavaGuru
![[Avatar]](/images/avatar/9922aa62eb4eafdcea1bf84537bd4f24.jpg)
Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline
|
Hmmm.... a questão sobre rodar em duas threads seria interessante, não havia pensado na idéia. Talvez haja uma pequena possibilidade... teria que conversar com uns colegas meus aqui sobre a possibilidade.
Outra questão é que esse processo já roda em um servidor relativamente rápido..Se não me engano é um processador Xenon..
De qualquer forma eu volto para postar um feedback.
Obrigado pela resposta Thingol
This message was edited 1 time. Last update was at 06/04/2009 09:58:31
|
--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes
" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2009 10:06:19
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Hum... não é bom você reduzir o número de cores, como você fez, se seu objetivo é converter para JPEG. Além de o gráfico ficar mais feio, o JPEG de qualquer maneira tenta processar tudo como se tivesse 8 bits por componente de cor (ou seja, 24 bits por pixel). Portanto, o processo de conversão para 256 cores talvez esteja deixando seu processo mais lento.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2009 10:15:22
|
Djonatah
JavaGuru
![[Avatar]](/images/avatar/9922aa62eb4eafdcea1bf84537bd4f24.jpg)
Membro desde: 11/05/2007 15:38:09
Mensagens: 204
Localização: São Bento do Sul - SC
Offline
|
Na verdade eu preciso fazer isso. A imagem em si contém transparência (a "saída padrão" da API é PNG), consequentemente se eu salvá-la da maneira como ela "sai da API" ela fica muito estranha (cores erradas).
Além do processador, vou tentar umas outras situações aqui (formato da imagem de saída, e obter a BufferedImage sem processamento das cores..)
Mais uma vez obrigado.
<><
|
--------------------------------------------------
" Daria tudo o que sei, pela metade do que ignoro " - Descartes
" Tudo tem seu tempo, cada coisa tem sua ocasiao " - Eclesiastes 3 |
|
|
 |
|
|