Domanda

Sto usando BerkeleyDB per sviluppare una piccola app. E ho una domanda sull'apertura di un database più volte in BDB.

Ho una grande serie di testo (corpus) e voglio caricarne una parte per fare il calcolo. Ho due pseudo-codice (mix con python) qui

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

Nel secondo esempio, aprirò il db prima del calcolo, caricherò il token per ogni ciclo e poi chiuderò il db.

Nel primo esempio, ogni volta che il ciclo richiede il token, apro, ottengo e quindi chiudo il db.

Si sono perse delle prestazioni?

Noto anche che sto usando un DBEnv per gestire il database

È stato utile?

Soluzione

Se non stai memorizzando nella cache il file aperto, le prestazioni andranno sempre perse perché:

  • chiami open () e close () più volte che sono piuttosto costosi,
  • perdi tutti i potenziali buffer (sia buffer di sistema che buffer interni bdb).

Ma non mi importerebbe troppo delle prestazioni prima che il codice venga scritto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top