Oi,
Não quero criar discussão, porém estou começando a testar o prevayler e não estou conseguindo obter os valores mencionados pelas pessoas no tocante à velocidade.
Começei pelo exemplo http://www-106.ibm.com/developerworks/web/library/wa-objprev/index.html e depois criei um baseado nele, bastante simples.
Nesse exemplo, fiz o seguinte: criei um la~ço FOR e adicionei 1000 (mil) registros no sistema. Essa operação demorou cerca de 20 segundos!
Criei a mesma estrutura de tabelas em um banco relacional e executei 1000 (mil) INSERTS consecutivos e essa operação levou cerca de 6 segundos!
Tudo isso rodando local. Minha máquina é um Dell com 1 processador Pentium 1.8Ghz e 256MB RAM. A quantidade de RAM usada durante o teste não passou de 120MB e o processamento ocilou entre 4 e 20% da máquina.
Pergunto
Esse é realmente o tempo que o prevayler necessita para gravar informações ou tem como otimizar?
O tempo de exclusão será semelhante (vai levar esses 20seg em média) ?
Quem quiser o código que usei é só perguntar que eu mando.
O prevayler processa cada transação de forma bem rápida, porêm o throughput é baixo.
Ou seja, transações ‘gordas’ são mais eficientes.
Experimenta criar transações que inserem múltiplos registros e compara a performance.
O tempo de gravacao em um log de transacao do Prevayler vai variar conforme quatro coisas:
Velocidade do seu HD
Sistema operacional
Se voce esta usando batched writes
Se voce deixou o sync() habilitado
Quanto ao segundo, a gente nao achou ateh agora o motivo de o Prevayler ser um pouco mais lento no Windows (NTFS) do que no Linux (EXT3), no mesmo hardware. Talvez seja alguma ineficiencia do sistema de arquivos do Windows em relacao aos sync()s. Voce pode tentar desabilitar eles e ver como a coisa se comporta (leia os arquivos da lista do Prevayler, isso ja foi bem discutido la).
Os batched writes estao disponiveis na versao 2, e podem representar um ganho grande de performance tambem. Sugiro a vc testar e ver como a coisa se sai.
Ah, mas aproveitando, o Prevayler nao vai ser muuuuuuito mais rapido que o seu RDBMS para inserts, updates e deletes. Em compensacao, a performance das “queries” traz resultados interessantes
Oi,
Estou estudando o exemplo Presto que usa o Prevayler. Porém, não estou entendendo uma coisa: Cadê a classe AbstractClockedSystem que o Presto utiliza?
Baixei tanto a versão 2.00.000alpha quanto a 2.00.001alpha do prevayler e nenhuma delas possui essa classe.
Aonde ela está? Ou ela não é mais usada?
Preciso de ajuda…
PS> Não entendi muito bem esta história de sync(). Aonde eu desativo ele?[/b]