.net - 基于 .Net 的建模应用程序的速度改进

标签 .net performance model analysis

我们正在开发一种在 .Net 中进行股票建模的分析工具。

该工具的主要目标是运行模型 5 年,并对各种产品的 future 进货、出货和库存进行预测。

代码的主要工作流程是 1. 从数据库中获取数据。 2. 对于每个日期 过程数据(运行生产和库存模型) 3. 遍历所有日期后,将所有数据一起更新到数据库中。

所以主要只有两个数据库调用,最初我们将所有数据放在数据集中,然后我们在 Ram 中处理它,不进行数据库调用。

我们遇到的问题是运行一个模型 1 年要花将近一个小时。我们的基准是在 5 分钟内运行该模型 5 年。

我们已经研究这个问题将近一个月了。现在我们已经能够在 10 分钟内完成运行 1 年的模型。以下是我们发现的事情。 - 在从数据集中获取数据时,如果表格包含所有五年的数据,则很难处理,因此我们将数据集分成每月循环,现在我们一次运行一个月的模型。这给了我们最大的速度提升。 - 试图减少每天运行的模型内的循环。这并没有给我们带来太大的改进。

您可以从以下链接下载一个 rar 文件。 http://dl.dropbox.com/u/4546390/iPlanner.rar

它包含三个文件。

iPlanner Tables.xls :给出了数据库设计的想法。 iPlanner Logic.xls :讨论表格和生产模型、装运模型和实际值处理的逻辑。我认为最重要的是查看生产模型,这将使​​您简要了解该模型每天都在做什么。

Common.cs:它具有调用生产模型功能,一切都从这里开始。您也可以检查一下。

该模型以前是用 excel 编写的,过去 5 年需要 2 分钟。迁移到 .Net 的原因是为了拥有更多共享功能并拥有类似软件的外观。

我正在尝试找出可以改进的方法。

如果需要更多信息,请告诉我。

提前致谢

最佳答案

如果每个日期的计算都是独立的,这听起来像是 map/reduce 的一个很好的应用。您对并行化此计算的想法进行了多少探索?六十个 Hadoop 处理器,五年窗口中每个月一个,可以缩短工作时间。

关于.net - 基于 .Net 的建模应用程序的速度改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978488/

相关文章:

.net - 在 Linq To SQL 中更新的最佳方式

c# - 仅更改月份和年份的 DateTimePicker

c# - 在 MVC3 中添加控件 ID 前缀以确保唯一性。发回服务器时我丢失了所有数据

ruby-on-rails - Rails 多种帖子类型 : nested forms and complex association

Asp.Net 在 IE 11 上运行缓慢

ruby-on-rails - Rails table_name_prefix 缺失

c# - 内存问题和 ThreadLocal<T>

C# 传递属性

Python:从字典中删除大量键的最快策略

performance - 在 VB6 中计时功能/测量性能的最佳方法是什么?