Desempenho perdido quando aberto um db várias vezes em BerkeleyDB
-
05-07-2019 - |
Pergunta
Eu estou usando BerkeleyDB para desenvolver um pequeno aplicativo. E eu tenho uma pergunta sobre a abertura de um tempo múltiplo banco de dados em BDB.
Eu tenho um grande conjunto de texto (corpus), e eu quero carregar uma parte dele para fazer o cálculo. Eu tenho dois pseudo-código (misturar com python) aqui
@ 1
def getCorpus(token):
DB.open()
DB.get(token)
DB.close()
@ 2
#open and wait
def openCorpus():
DB.open()
#close database
def closeCorpus():
DB.close()
def getCorpus(token):
DB.get(token)
No segundo exemplo, vou abrir a db antes do cálculo, a carga token para cada loop e em seguida, feche o db.
No primeiro exemplo, cada vez que o loop pedir o token, eu vou abrir, entrar e depois fechar a db.
Existe algum desempenho perdido?
Eu também notar que eu estou usando um DBEnv para gerenciar o banco de dados
Solução
Se você não são cache o arquivo aberto que você sempre terá o desempenho perdido porque:
- você chamar Open () e close () múltiplas vezes que são bastante caros,
- você perde todos os buffers potenciais (ambos os buffers do sistema e bdb buffers internos).
Mas eu não me importo muito com o desempenho antes que o código é escrito.