我正在爲我的數據庫開發高度專業化的搜索引擎。當用戶提交搜索請求時,引擎將搜索項分割成數組並循環。在循環內部,將根據幾種可能的場景來檢查每個搜索項,以確定它可能的含義。當搜索條件與場景匹配時,會將WHERE條件添加到SQL查詢中。有些術語可以有多種含義,在這種情況下,引擎會建立一系列建議來幫助用戶縮小結果。在同一個循環中執行兩個不同的任務不好嗎?
另外:如果任何人有興趣知道,ambigous術語是通過加上關鍵字前綴。例如,1954年可能是一年或序列號。引擎會向用戶建議這兩種情況,並將搜索字詞修改爲年份:1954年或序列號:1954年。
在同一個循環中構建SQL查詢和精化建議對我而言感覺不知怎麼地錯了,但是將它們分開會增加更多的開銷,因爲我將不得不循環遍歷同一個數組兩次並測試所有相同的場景兩次。什麼是更好的行動方式?
只是因爲它仍然爲O(n)不會使它更好。 O(n)= O(100000n)。當你可以做一次的時候,爲什麼要跑兩次? 很明顯,將代碼分離到方法中是一個好主意。 – 2010-01-22 16:07:59
這就是我所建議的。我只是表示,理論上這不是一個表現_issue_,但它肯定不會提供更好的性能(更糟的是) – Bozho 2010-01-22 16:09:53