由於我們的系統仿真的一部分陣列搜索會員,我建模使用稀疏存儲陣列,並保持對象的列表來跟蹤那些內部分配的緩衝區的64位尋址的存儲空間內存空間。緩衝區被動態分配和解除分配。的範圍
我有一個函數,在分配的緩衝區內搜索給定的地址或地址範圍,以查看對內存模型的訪問是否在分配空間中,並且我的第一次切入「搜索所有緩衝區,直到找到匹配「會使我們的模擬速度減慢10%。我們的UUT執行大量的內存訪問,必須通過模擬進行審查。
所以,我試圖優化。內存緩衝區對象包含起始地址和長度。我正考慮在對象創建時通過開始地址對對象數組進行排序,然後在調用檢查函數時,對數組執行二進制搜索,以查看給定地址是否落入開始/結束範圍內。
是否有更好的/更快的方式做到這一點?必須有一些更快/更酷的算法,使用堆或散列簽名或一些 - 如,對嗎?