2015-10-15 77 views
2

我在手冊和信息頁面閱讀了有關find命令中優化級別的章節,我不明白爲什麼我應該使用而不是使用最積極的優化級別。爲什麼我不應該使用查找優化?

唯一的相關句子我發現了(從4.4.2man find版本):

相反,被證明是可靠的,強大和有效的優化可以隨着時間的推移較低的優化級別啓用。

findutils測試套件對每個優化級別的查找運行所有測試,並確保結果相同。

如果我深知,這是關於打樣find通過的findutils正確的行爲,但是,本次測試服確保所有otimization水平給予了相同的結果。

回答

2

你錯過了這句話:

基於成本的優化器有任何給定的測試是如何可能成功定主意。

這意味着,如果你有高度非典型內容的目錄(如大量的命名管道和極少數的「常規」文件),優化實際上可能惡化查詢由性能(在這種情況下,假設-type f-type p成功的可能性更大)。在這樣的情況下,最好是手動優化它,這隻有在-O1-O2纔有可能。

即使忽略這個問題,基於成本的優化器的固定成本也很難得到正確的結果。涉及多個硬件和軟件(硬盤,內核,文件系統),它們都會對它們進行一些緩存和優化。因此,很難預測不同的操作會是多麼昂貴,甚至相對於彼此(例如,我們知道readdir(2)stat(2)便宜,但我們不知道要便宜多少)。這意味着即使假設典型的文件系統內容,基於成本的優化並不總能保證產生最佳的優化。較低的優化級別允許您通過反覆試驗來手動調整查詢,如果更加費力,這可能更可靠。

相關問題