速度

2012-04-24 38 views
-1

你知道是什麼樣的速度差:速度

  • 泡菜
  • 擱置
  • sqlite的
  • 一些MySQL的連接器
  • MongoDB的
  • ...

如果我想存儲許多字符,這將是最好的方式,有什麼區別?

+2

我會說這個問題會爲SO創造太多的討論 - 這裏唯一的好答案是'它取決於'。 – 2012-04-24 16:49:16

+0

真的嗎?我的意思是我可以編寫測試套件來存儲和檢索10000字典,但這需要一段時間。這不是一項明確的任務嗎?但是我知道有些問題出於某種原因讓人感到害怕:( – Gerenuk 2012-04-24 16:55:27

+0

您的字典包含什麼內容?您是僅從Python代碼訪問它,還是需要從其他位置訪問它?您擁有哪些資源(單獨DB服務器)?你總是會知道你的數據的來源嗎?安全是一個問題嗎?現有的代碼是什麼以及它使用了什麼?有大量的細節可以改變這個問題的答案 – 2012-04-24 16:57:04

回答

2

我不想拖出評論,所以我會回答。

鑑於你所說的:

沒有服務器,沒有現成的代碼。我只想編寫一個本地存儲字符串的程序,將字符串字符串存儲在文件或其他內容中。沒有比這更花哨的。

我會說你最好的選擇這樣簡單的事情可能是像JSON。但是,如果你需要超快,它可能不是最好的解決方案(或者它可能是 - 我真的不知道它是如何執行的)。這很簡單,並且在大多數平臺上都有它的實現,它涵蓋了你想要的許多地方。如果你想要儘可能快的速度,我的建議是測試它,這是你肯定知道的唯一方法。當然,簡單通常是速度的好兆頭。

您還沒有提供足夠的信息來了解性能在這裏有多重要。請記住,除非你需要需要的性能(可證明),那麼不要打擾優化,直到你做。尋找易於閱讀和維護代碼的東西,並且易於與文件端協同工作。這就是我推薦JSON的原因。

1

對於字符串字典的持久字符串,anydbm非常合理。 bsddb可以從anydbm中使用,並且速度很快但對被中斷有點敏感。 gdbm可以從anydbm中使用,速度較慢但不太可能產生損壞的數據庫。

此外,如果你想讀取整個字典到內存中,做出很多改變,並將結果字典寫回去,有:http://stromberg.dnsalias.org/svn/dohdbm/trunk/我正在使用這個在備份軟件項目。如果你願意的話,它會壓縮你的字典,如果你的I/O速度特別慢,或者你有很多修改需要的話,這可能會是性能上的勝利。