我想問一下它是否有意義,如果有,是否有任何嘗試?設計優化編譯器時是否考慮過遺傳算法?
澄清的問題:
當編譯器製造商的優化工作,他們試圖使編譯器根據目標架構右吐最好的裝配順序?因此,從這個意義上說,他們必須想象在X情況下最好的指令是什麼。因此,我想象在設計過程中,他們通過直覺使用他們的裝配知識,以及一些試驗/錯誤過程和典型案例的基準測試(代碼片段),它們針對優化器。
但是,如果彙編代碼的編譯器輸出選擇可以通過遺傳算法來決定,那麼遺傳算法只會用兩個標準來嘗試一切:「尊重客戶意圖不變」和「執行測試中速度越快越好」。
使用這個,似乎有可能通過向元優化器提供數千個代碼片段來優化,學習優化它們的最佳方法,然後最終優化器作業來準備優化器(例如「最終的優化器編譯器「)將檢測哪個片段與要解析的客戶端代碼相似並應用翻譯。
我希望我很清楚。我並不是建議編譯器在客戶端代碼編譯期間使用GO,而是編寫一個嵌入GO(在編譯器製造商的實驗室中運行)中找到的靜態結果的編譯器。
遺傳算法鏈接到一個PDF似乎最適合的問題本質上是模擬的。很難想象,將一個指令(序列)的一半與另一個指令(序列)結合起來,從而獲得可行的結果 - 更不用說更好的解決方案了。 –