Frage

Ich verwende BerkeleyDB eine kleine App zu entwickeln. Und ich habe eine Frage zu einer Datenbank mehrere Zeit in BDB öffnen.

Ich habe eine große Menge von Text (Korpus), und ich möchte ein Teil davon laden, die Berechnung zu tun. Ich habe zwei Pseudo-Code (Mischungs mit Python) hier

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

Im zweiten Beispiel, werde ich öffnen Sie die db vor der Berechnung, Last-Token für jede Schleife und dann die DB schließen.

Im ersten Beispiel wird jedes Mal, wenn die Schleife für die Token fragen, ich werde öffnen, und dann die DB schließen.

Gibt es eine Leistung verloren?

ich auch anmerken, dass ich ein DBEnv bin mit der Datenbank verwalten

War es hilfreich?

Lösung

Wenn Sie nicht die geöffnete Datei-Caching werden Sie immer die Leistung verloren, weil:

  • Sie rufen open () und close () mehrere Male, die recht teuer sind,
  • Sie verlieren alle potenziellen Puffer (beide Systempuffer und BDB interne Puffer).

Aber ich würde nicht zu viel kümmern uns um die Leistung, bevor der Code geschrieben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top