我正在研究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