2016-08-21 103 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++