2016-08-21 2 views
-1

У меня есть очень большой симулятор monte-carlo, который моделирует сетку Северной Америки. Он довольно большой и требует времени для запуска, но изначально был сделан в Excel/VBA для простоты.Порт Excel/VBA на скомпилированный язык

Теперь я хочу передать код VBA на скомпилированный язык, чтобы оптимизировать время выполнения. В идеале я хотел бы оставить данные в формате электронных таблиц, чтобы использовать структуру электронных таблиц Excel, поэтому код по существу перейдет в электронную таблицу, будет собирать данные (т. Е. Читать большие блоки информации в массивы), а затем начать работу над этими массивы.

Есть ли общепринятые «наилучшие» способы достижения этого? Например, C# с некоторыми надстройками, такими как EPPlus? Я использовал код на C++ десять лет назад, так что прошло какое-то время, поэтому я снова начну процесс наклона и просто хочу убедиться, что я выбираю «правильный» путь (я уверен, что есть много способов решить эту проблему проект, но я бы предположил, что большинство из них в конечном итоге будут такими же хорошими, как если бы я только что оставил код во время выполнения в VBA)

+0

Конечно, компилируемый язык может быть быстрее, но большую часть времени она сводится к тому, как хорошо вы знаете, как обращаться код. Таким образом, было бы намного лучше, если бы вы делили свой код VBA здесь и позволили нам помочь вам оптимизировать его, а не спрашивать надстройку Excel. Вы можете также поделиться своим кодом в [Обзор кода] (http://codereview.stackexchange.com/) для его оптимизации. –

+0

Я согласен с @ Anastasiya-Romanova 秀 Вы почти наверняка получите лучшие результаты, потратив ваше время на оптимизацию существующего кода VBA, а не на перенос его на другой язык. – Kaz

ответ

1

Как и все, многое зависит от вашего текущего приложения - то есть, что находится в код, насколько велика книга ... бла-бла. Поскольку вы делаете Монте-Карло, я думаю, что одним из главных соображений является скорость.

Вы можете использовать VSTO, который позволит вам использовать C#, однако это будет медленнее, чем подход VBA из-за COM-взаимодействия. Вы можете написать код на C# и создать COM-аддины, которые могут быть в порядке, но он все еще делает COM-взаимодействие и, вероятно, будет слишком медленным.

Для вашей ситуации, я думаю, меня бы толкали в сторону кодирования C++ addins, которая будет намного быстрее, чем VBA. Загружает ссылки на Google для этого.

XLL Excel addin in unmanaged C++

Смежные вопросы