加快基于 .Net 的建模应用程序的改进



我们正在开发一种在.Net中修改股票的分析工具。

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

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

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

我们面临的问题是,运行一个模型 1 年需要将近一个小时。我们的基准是在 5 分钟内运行模型 5 年。

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

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

它包含三个文件。

iPlanner Tables.xls :这是数据库设计的想法。iPlanner Logic.xls:讲表和生产模型、出货模型和实际价值处理的逻辑。我认为最重要的是看生产模型,这会让你简要了解模型每天做什么。

通用.cs :具有调用生产模型功能,一切从哪里开始。你也可以看看。

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

我正在努力找出可以改进的方法。

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

提前致谢

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

首先:配置文件;p

接下来我会尝试从系统中取出DataTable,转而使用与数据完全匹配的强类型类。虽然数据加载速度不是问题,但我会使用类似dapper-dot-net的东西来尽可能高效地加载数据。

对于DataTable每个成员的访问都是间接的,并且必须通过内部查找进行,可能涉及途中的拳击。通过使用对实际数据属性(几乎总是内联到字段)的静态绑定来消除所有这些内容。不幸的是,这有点难以衡量为估计的影响,因为这是不平凡的。

相关内容

  • 没有找到相关文章

最新更新