2016-08-21 180 views
-1

我有一个非常大的monte-carlo模拟器,可以模拟北美的电网。它非常大,需要一段时间才能运行,但最初是为了简化而在Excel/VBA中完成的。将Excel/VBA转换为编译语言

我现在想将VBA代码移植到编译语言中以优化运行时间。理想情况下,我希望将数据保留为电子表格格式,以便利用Excel的电子表格结构,因此代码本质上会转到电子表格,收集数据(即将大块信息读入数组),然后开始处理这些数据阵列。

是否有任何普遍接受的“最佳”方法来完成这一点?例如,带有一些加载项的C#如EPPlus?我过去十年前曾经用C++编写代码,所以这已经有一段时间了,所以我会再次启动学习过程,只是想确保我选择“正确”的路径(我确信有很多方法可以解决这个问题项目,但我想他们中的大多数最终会像我刚刚离开VBA中的运行时代码一样好)

+0

当然,编译语言可以更快,但大部分归结为你知道如何以及如何处理你的代码的时间。所以,如果你在这里分享你的VBA代码,让我们帮你优化它,而不是问问一个Excel加载项会好很多。您最好在[Code Review](http://codereview.stackexchange.com/)中分享您的代码以优化它。 –

+0

我同意@ Anastasiya-Romanova秀您将花费时间优化现有VBA代码,而不是尝试将其移植到另一种语言,您几乎可以获得更好的结果。 – Kaz

回答

1

作为一切,很大程度上取决于您当前的应用程序 - 即什么是代码,工作簿有多大......等等等等。既然你在做Monte Carlo,我想主要的考虑因素之一就是速度。

您可以使用VSTO,它将允许您使用C#,但由于COM互操作,这将比VBA方法慢。 你可以在C#中编写代码并创建COM插件,这可能没问题,但它仍在执行COM互操作,可能会太慢。

对于你的情况,我想我会被推向编码C++插件的方向,这将比VBA快得多。为此,Google上的参考资料大量增加。

XLL Excel addin in unmanaged C++