Pessoal estou em um novo projeto aqui onde resumidamente vou receber
um arquivo txt com 24000 mil linhas aproximadamente, cada linha os
dois primeiro registros são o tipo de registro e esses registros são
do tipo, cadastro de cliente, duplicatas de cliente, cadastro de
produto etc.
Dentro deste txt existe cerca de 6500 registro de produto e estou
passando pelas seguintes situações.
Inicialmente separei o meu projeto com Modelo, Persistência, Controlador
Cada linha lida eu preencho um obj (modelo) e passo para um DAO. No
DAO eu utilizei o ContentValues onde eu leio o obj e mando um
db.insert(tableName, null, contentValues)
Nessa estrutura acima demora cerca de 15 minutos em média para
percorrer todos os 6500 produtos.
Mudei a estrutura para trabalhar com Threads onde data linha do
produto lida eu preencho um obj depois eu adiciono em um LinkedList,
Depois um Thread fica verificando de existe registros nessa LinkedList
e ela passa para o DAO para adicionar utilizando o ContentValues onde
eu leio o obj e mando um db.insert(tableName, null, contentValues)
Com a estrutura de Thread e ContentValues nos DAO o tempo de leitura e
insert na tabelas baixou para 3:30 a 4:00 minutos em média.
Ledo alguma coisa na internet cheguei alguns tutoriais onde se utiliza
o InsertHelper (segue o link
http://developer.android.com/reference/android/database/DatabaseUtils.InsertHelper.html
e do tutorial http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/)
Fiz essa alteração de utilizar o InsertHelper ao invés do
ContentValues o tempo médio agora fica em 3:00 min em média.
Minha dúvida é a seguinte, alguém já fez alguma estrutura onde se faz
uma insere uma grande quantidade de dados e menor tempo.
PS. Os testes foram feitos feito nos emulador com a versão 2.2 e em um
Celular Nexus S com versão 2.3.6 e um tablet chinguilingui com android
2.2 com processador 1,0 ghz e 512 mb de ram.
0 comentários:
Postar um comentário