2009-11-13 54 views
0

如果有很多檢查,哪個更有效?我應該直接檢查'如果文件存在'或檢查數據庫列嗎?

bool exists=File.Exists(file); 

bool exists= check db list of existing files; 
+2

這不是很清楚。檢查什麼,使用語言? – 2009-11-13 06:02:51

+0

對於我來說,看起來像C#,基於'File.Exists()'的語法和外殼。 Java會是小寫的。 – 2009-11-13 10:23:45

+0

c#檢查圖像 – zsharp 2009-11-13 17:00:03

回答

2

這取決於。

如果你想檢查文件的存在,你別無選擇,只能檢查文件系統。是的,這可能比數據庫調用慢。儘管如此,Db調用仍然是遠程進程間調用,因此它們本身的權限可能很昂貴。

答案是嘗試這兩個,配置文件,並針對您的特定場景的最佳答案進行優化。

3

過程中第二個的,由於系統調用這樣一個是昂貴的。最好使用集體目錄列表功能,並檢查內存中的文件是否存在,而無需關注文件系統。

+0

他沒有說這是在內存中。他說這是一個數據庫調用。由於這是一個遠程調用,它可能不會快得多。我建議他嘗試兩種方式,描述/衡量表現,並且看看哪個更快。 – 2009-11-13 10:25:30

+0

從算法複雜度來看。檢查每個文件是O(n)時,立即檢查所有文件是恆定時間操作或O(1)。那麼在這兩種情況下都需要內存中的O(n)。 – doc 2009-11-23 21:09:09

1

如果你在數據庫中寫入文件的路徑,它比File.Exists請求文件快得多,這取決於文件的數量。如果你只要求一個,它就不會有太大的區別。但是如果你檢查更多的文件,數據庫請求會更快,我想你會通過數據庫獲得文件的路徑,對吧?