2017-04-24 32 views
0

我已經和我的同事多次討論過這個問題,我99.9%確定我是對的,但他們一直堅持說他們是正確的,我開始懷疑我是否瘋狂。目錄查找的速度與格式化的文件名查找

我們正在上傳用戶從他們的移動設備上拍攝的圖片,累積他們可以上傳數千個足夠的時間。這些照片中的每一張都屬於「工作單」,它們被賦予一個連續的整數。我們想優化檢索(根據工作順序)而不是寫作。我們也在Windows機器上。

我提出的存儲方法是這樣的:

Images 
|-- 23875 
| |-- f0347b8.png 
| |-- b04675b.png 
|-- 28765 
    |-- aab658c.png 

他們提出的存儲方法是這樣的:

Images 
|-- 23875_f0347b8.png 
|-- 23875_b04675b.png 
|-- 28765_aab658c.png 

對於我來說,爲了收集2個圖像工作秩序23875,我會在目錄Images/23875中查找,並抓取所有.png文件。

爲了讓他們做同樣的事情,他們將遍歷所有文件,並對所有文件名運行通配符篩選器,其效果爲23875_*.png

我相信我的方法是優越的,因爲在有成千上萬的圖像的情況下,它不需要對潛在的數千個不相關的文件運行通配符過濾器。我問他們爲什麼認爲他們的方法是優秀的,但我沒有得到一個令人信服的答案。

任何意見表示讚賞。

回答

2

這種方法

Images 
|-- 23875_f0347b8.png 
|-- 23875_b04675b.png 
|-- 28765_aab658c.png 

需要通過迭代每一個文件Images找到匹配23875_*的所有文件。每一次你想找到它們。一遍又一遍。直到世界結束,星星變黑。

將所有文件放在一個目錄中會丟棄創建該文件時所擁有的信息,從而使文件難以在將來找到。嘗試在文件名中編碼該信息意味着數據與所有其他類似數據混合在一起,因此需要在將來過濾掉。

爲什麼?你是對的 - 這是沒有道理的。它沒有任何理由把垃圾信息扔在垃圾裏。

你的方法

Images 
|-- 23875 
| |-- f0347b8.png 
| |-- b04675b.png 
|-- 28765 
    |-- aab658c.png 

已經分割的文件轉換成所需要的關聯。不需要過濾或搜索來查找文件。

他們一直堅持自己是正確的

哦琦。也許他們喜歡這種摔跤...