System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及程序編譯,尤其涉及一種動態遍優化方法、設備及介質。
技術介紹
1、編譯過程中的“遍”(pass)是指對源程序或其中間結果進行一次從頭至尾的掃描與處理,旨在生成新的中間結果或目標代碼。整個編譯流程正是由多個這樣的遍協同完成的。根據是否改變程序的中間表示結構,遍被分為轉化遍(transform?pass)和分析遍(analysis?pass)兩種。轉化遍會修改程序結構,而分析遍則不會。遍之間存在依賴關系,某些轉化遍在執行時需要依賴特定分析遍的結果作為輔助信息,例如,死代碼消除遍就依賴于支配樹分析的結果。由于只有轉化遍會改變程序中間表示結構,因此當程序中間結構未發生變化時,分析遍的結果可以被緩存并重用。
2、遍的設計遵循模塊化原則,每個遍都是獨立開發的,編譯器通過協同執行不同的遍來完成編譯任務,這增強了遍的重用性和靈活性。遍的執行順序并非固定不變,不同的遍排列順序會導致中間結果所需的內存空間以及最終編譯出的可執行程序的運行時間有所不同。
3、遺傳算法(genetic?algorithm,?ga)是一種啟發式算法,它借鑒了大自然的生物進化原理,在可接受的計算時間和空間內為組合優化問題的每個實例提供一個可行解。遺傳算法不直接處理問題的具體參數,而是對整個參數空間進行編碼,并從一組初始點開始搜索,而非單個初始點。針對不同問題,可以通過設計不同的個體選擇策略、交叉和變異方案,以確保算法的收斂性和結果的準確性。因此,遺傳算法具有廣泛的應用性、高度的非線性、易修改性和并行性。
4、主流的編譯器,如ll
技術實現思路
1、為了解決上述問題,本申請提出了一種動態遍優化方法,包括:對種群進行初始化,以對所述種群的多個個體確定轉化遍對應的順序編碼;根據所述順序編碼對于源程序進行編譯,以確定編譯過程的內存消耗和運行時間,并根據所述內存消耗和所述運行時間確定所述種群的指標;根據所述指標對所述多個個體進行篩選,確定篩選后所述轉化遍對應的新順序編碼,并根據所述新順序編碼確定新指標;確定預先設置的指標閾值,將所述新指標與所述指標閾值進行比較;若所述新指標大于或等于所述指標閾值,則結束優化;若所述新指標小于所述指標閾值,則重新進行優化。
2、在一個示例中,根據所述順序編碼對于源程序進行編譯,具體包括:確定所述轉化遍對應的分析遍的結果是否在緩存中;若所述分析遍的結果不在緩存中,則執行不在緩存中的分析遍,以得到分析結果,并將所述分析結果存入緩存中;若所述分析遍的結果在緩存中,則確定緩存結果,根據所述緩存結果執行所述轉化遍。
3、在一個示例中,根據所述緩存結果執行所述轉化遍之后,所述方法還包括:確定結構已改變的分析遍結果,將所述結構已改變的分析遍結果進行無效處理;對全部的轉化遍進行檢查,以確定全部的轉化遍是否完成遍歷;若全部的轉化遍完成遍歷,則結束編譯;若全部的轉化遍未完成遍歷,則繼續進行編譯。
4、在一個示例中,確定篩選后所述轉化遍對應的新順序編碼,具體包括:對所述多個個體進行隨機選擇,以確定第一順序編碼和第二順序編碼,并確定預先設置的交叉順序編碼;根據所述第一順序編碼和所述第二順序編碼對所述交叉順序編碼進行交叉填充。
5、在一個示例中,根據所述第一順序編碼和所述第二順序編碼對所述交叉順序編碼進行交叉填充,具體包括:確定所述第一順序編碼的保留編號,并將所述保留編號對應的內容填充到所述交叉順序編碼對應編號的位置中;確定填充后所述交叉順序編碼的剩余編號的數量,根據所述數量對所述第二順序編碼的全部編號按照順序進行篩選,以確定篩選編號;將所述篩選編號對應的內容依次填充到所述剩余編號的位置中。
6、在一個示例中,確定篩選后所述轉化遍對應的新順序編碼,具體還包括:對所述多個個體進行隨機選擇,以得到一個隨機順序編碼,并確定所述隨機順序編碼的全部編號;確定預先設置的交叉順序編碼,根據所述全部編號對所述交叉順序編碼進行變異填充。
7、在一個示例中,根據所述全部編號對所述交叉順序編碼進行變異填充,具體包括:確定所述隨機順序編碼的變異編號組,將所述變異編號組對應的內容進行交換,并將交換后的內容填充到所述交叉順序編碼對應編號的位置中;在所述隨機順序編碼中確定所述變異編號組之外的其余編號,將所述其余編號對應的內容填充到所述交叉順序編碼對應編號的位置中。
8、在一個示例中,所述順序編碼包括多個位置,所述多個位置對應著多個編號,所述多個編號對應多個轉化遍。
9、另一方面,本申請還提出了一種動態遍優化設備,包括:至少一個處理器;以及,與所述至少一個處理器通信連接的存儲器;其中,所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述至少一個處理器執行,以使所述一種動態遍優化設備能夠執行:對種群進行初始化,以對所述種群的多個個體確定轉化遍對應的順序編碼;根據所述順序編碼對于源程序進行編譯,以確定編譯過程的內存消耗和運行時間,并根據所述內存消耗和所述運行時間確定所述種群的指標;根據所述指標對所述多個個體進行篩選,確定篩選后所述轉化遍對應的新順序編碼,并根據所述新順序編碼確定新指標;確定預先設置的指標閾值,將所述新指標與所述指標閾值進行比較;若所述新指標大于或等于所述指標閾值,則結束優化;若所述新指標小于所述指標閾值,則重新進行優化。
10、另一方面,本申請還提出了一種非易失性計算機存儲介質,存儲有計算機可執行指令,所述計算機可執行指令設置為:對種群進行初始化,以對所述種群的多個個體確定轉化遍對應的順序編碼;根據所述順序編碼對于源程序進行編譯,以確定編譯過程的內存消耗和運行時間,并根據所述內存消耗和所述運行時間確定所述種群的指標;根據所述指標對所述多個個體進行篩選,確定篩選后所述轉化遍對應的新順序編碼,并根據所述新順序編碼確定新指標;確定預先設置的指標閾值,將所述新指標與所述指標閾值進行比較;若所述新指標大于或等于所述指標閾值,則結束優化;若所述新指標小于所述指標閾值,則重新進行優化。
11、本申請通過初始化種群并確定轉化遍的順序編碼,實現了對編譯過程的靈活調整和優化,基于種群的優化策略有助于探索多種可能的編譯順序,從而找到內存消耗和運行時間最優的方案。在確定順序編碼對應的分析遍結果是否在緩存中后,選擇性地執行分析遍或直接使用緩存結果,這大大提高了編譯效率,減少了不必要的重復計算。本申請通過嚴格的篩選和更新機制,不斷迭代優化轉化遍的順序編碼。通過比較新指標與預設的指標閾值,可以智能地判斷何時結束優化,從而在保證優化效果的同時,也控制了計算成本。在交叉填充和變異填充等操作中,引入了隨機性和多樣性本文檔來自技高網...
【技術保護點】
1.一種動態遍優化方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,根據所述順序編碼對于源程序進行編譯,具體包括:
3.根據權利要求2所述的方法,其特征在于,根據所述緩存結果執行所述轉化遍之后,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,確定篩選后所述轉化遍對應的新順序編碼,具體包括:
5.根據權利要求4所述的方法,其特征在于,根據所述第一順序編碼和所述第二順序編碼對所述交叉順序編碼進行交叉填充,具體包括:
6.根據權利要求1所述的方法,其特征在于,確定篩選后所述轉化遍對應的新順序編碼,具體還包括:
7.根據權利要求6所述的方法,其特征在于,根據所述全部編號對所述交叉順序編碼進行變異填充,具體包括:
8.根據權利要求1所述的方法,其特征在于,所述順序編碼包括多個位置,所述多個位置對應著多個編號,所述多個編號對應多個轉化遍。
9.一種動態遍優化設備,其特征在于,包括:
10.一種非易失性計算機存儲介質,存儲有計算機可執行指令,其特征在于,所述
...【技術特征摘要】
1.一種動態遍優化方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,根據所述順序編碼對于源程序進行編譯,具體包括:
3.根據權利要求2所述的方法,其特征在于,根據所述緩存結果執行所述轉化遍之后,所述方法還包括:
4.根據權利要求1所述的方法,其特征在于,確定篩選后所述轉化遍對應的新順序編碼,具體包括:
5.根據權利要求4所述的方法,其特征在于,根據所述第一順序編碼和所述第二順序編碼對所述交叉順序編碼進行交叉填充,具體包括:
6....
【專利技術屬性】
技術研發人員:錢希福,姜凱,趙鑫鑫,薛海軍,劉敏,
申請(專利權)人:山東浪潮科學研究院有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。