Question

J'utilise BerkeleyDB pour développer une petite application. Et j'ai une question sur l'ouverture d'une base de données plusieurs fois dans BDB.

J'ai un grand ensemble de texte (corpus) et je souhaite en charger une partie pour effectuer le calcul. J'ai deux pseudo-codes (mélanger avec python) ici

@ 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)

Dans le deuxième exemple, j'ouvre la base de données avant le calcul, charge le jeton pour chaque boucle, puis ferme la base de données.

Dans le premier exemple, chaque fois que la boucle demande le jeton, j'ouvre, récupère puis ferme la base de données.

Des performances ont-elles été perdues?

Je note également que j'utilise DBEnv pour gérer la base de données

Était-ce utile?

La solution

Si vous ne mettez pas le fichier ouvert en cache, vos performances seront toujours perdues, car:

  • vous appelez open () et close () plusieurs fois, ce qui est assez coûteux,
  • vous perdez tous les tampons potentiels (les tampons système et les tampons internes bdb).

Mais je ne me soucierais pas trop de la performance avant que le code ne soit écrit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top