我正在研究monte carol pricer,我需要提高引擎的效率。c中的虛擬內存地址管理#
- 蒙特卡羅路徑是通過第三方庫(在C++)
- 定價IronPython中完成(由最終用戶創建的腳本)
- 一切是由一個C#應用驅動創建
定價過程如下:
- C#應用程序請求的路徑,並收集他們
- C#應用程序推路徑劇本,誰的價格和返回值
- C#應用程序中顯示的結果爲最終用戶
收集被預先知道路徑的數量和規模。
我有2個解決方案的一些優點和缺點:
- 請求路徑生成,每個路徑,要求腳本返回結果和finaaly一次聚集所有路徑都處理
- 請求路徑的結果生成,收集所有的人,要求該腳本一次處理所有這些,retrun我的最終價格
第一個解決方案很好地工作在所有情況下,但由於路徑的數量要求的增加業績增減e(我認爲這是由於多次調用ironpython)
第二個解決方案更快,但如果請求的路徑數量是「超出內存」異常(我認爲它沒有足夠的虛擬內存尋址空間)太大
我選擇中間地帶,並處理一堆路徑,然後彙總價格。 我現在想要的是通過提前瞭解有多少路徑可以通過處理「內存不足」異常來提高性能。
我做了數學計算,並且事先知道內存中的大小給定請求的路徑。但是因爲我安靜肯定它不是一個記憶的問題,但更多的虛擬內存尋址問題
所以這一切的文字是由以下2個問題總結:
- 是否有可能提前知道我的 進程有多少虛擬內存地址需要存儲一個類的實例(大小在內存和結構已知)?
- 是否有可能知道多少虛擬內存地址仍然可以繼續我的過程
順便說一句,我工作的32位計算機上
在此先感謝您的幫助
生產者/消費者...線程? – Guillaume
任何原因不只是得到一個64位計算機,並超過4gb ram最大?無論如何,Siovled問題併爲您提供更好的可擴展性。 – TomTom
@Tomtom:不能那樣做,我沒有對目標環境的控制。它可能是64位或32位 – Guillaume