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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top