[英]Virtual memory address management in c#
我正在制作monte carol pricer,我需要提高發動機的效率。
定價過程如下:
收集的路徑的數量和大小是事先知道的。
我有2個解決方案,有一些優點和缺點:
第一個解決方案在所有情況下都能正常工作,但是隨着請求路徑數量的增加,性能會下降(我認為這是由於多次調用ironpython)
第二個解決方案更快,但如果請求的路徑數太大,可能會遇到“內存不足”異常(我認為虛擬內存尋址空間不夠)
我選擇中間地帶並處理一堆路徑然后匯總價格。 我現在想要的是通過提前知道我可以處理“內存不足”異常可以處理多少路徑來進一步提高性能
我做了數學計算,事先知道給定請求的路徑大小(在內存中)。 但是因為我很確定這不是內存問題,而是更多的虛擬內存尋址問題
因此,所有這些文本都通過以下兩個問題進行總結:
順便說一下,我正在研究32位計算機
先謝謝您的幫助
關於問題1: C#/ .NET對象使用多少內存?
關於問題2:您可以使用內存性能計數器
找出一個對象在.NET中占用多少內存是一項非常困難的任務。 我幾次遇到同樣的問題。 有一些不完美的方法,但沒有一個是非常精確的。
我的建議是估計路徑需要多少,然后通過一堆路徑,留下一個很好的安全邊際。 即使你一次只處理10個,你已經減少了10倍的開銷。
您甚至可以設置邊距可配置,然后進行調整,直到達到良好的平衡。 更優雅的解決方案是在另一個進程中運行整個事情,如果它遇到OutOfMemoryException,則用較少的項重新開始計算(並相應地調整邊距)。 但是,如果您有太多的數據導致內存不足,那么將它傳遞到兩個進程(這也會復制數據)可能會有點慢。
可能是內存溢出是由於路徑處理器中的一些缺陷? 內存泄漏可能? 這些都可以在C ++和.NET中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.