質問

私はBerkeleyDBを使用して小さなアプリを開発しています。また、BDBでデータベースを複数回開くことについて質問があります。

大量のテキスト(コーパス)があり、その一部を読み込んで計算を行いたい。ここに2つの擬似コード(Pythonとのミックス)があります

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

2番目の例では、計算の前にdbを開き、各ループのトークンをロードしてからdbを閉じます。

最初の例では、ループがトークンを要求するたびに、dbを開いて取得し、閉じます。

パフォーマンスの低下はありますか?

また、データベースの管理にDBEnvを使用していることに注意してください

役に立ちましたか?

解決

開いたファイルをキャッシュしない場合、次の理由で常にパフォーマンスが低下します:

  • open()とclose()を複数回呼び出しますが、これは非常に高価です
  • すべての潜在的なバッファ(システムバッファとbdb内部バッファの両方)を失います。

しかし、コードを書く前のパフォーマンスについてはあまり気にしません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top