Мне любопытно сравнение производительности двух, если бы вы хотели написать функционально идентичные программы. Я работаю над проектом, где я начинаю думать, что addin может быть более подходящим, учитывая объем функций сравнения, которые мне нужно делать в VBA.VSTO Надстройка против производительности VBA
ответ
Зависит от того, что делают эти программы и как они это делают.
VSTO /.net быстрее, чем VBA, и позволяет писать код, который работает на нескольких потоках. Но Excel - это COM, и в конечном итоге все должно попасть в конвейер STA (Single-Threaded Apartment), а управляемый (.net) код взаимодействует с COM через COM Interop, то есть он разговаривает с Excel через Primary Interop Assemblies, который медленнее, чем «родной» VBA.
Другими словами:
- Ваша программа делает много обработки и очень немногие из таблицы операций чтения/записи, перейдите VSTO.
- Ваша программа делает много взаимодействий в электронной таблице, переходите в VBA. Взаимодействие электронных таблиц - это в значительной степени самая медленная вещь, которую может сделать VBA, но делать их с VSTO будет еще более болезненным, потому что все должно быть обработано с управляемого кода до COM.
Best может быть гибридное решение: выставить определенные пользователем функции в VBA, и сделать код вызова VBA в ссылочного COM-видимой .net DLL, которая делает фактическое вычисление даже работая с сборок взаимодействия Excel.
Хорошо написанный код VBA может превосходить эквивалентный код VSTO.
Я начинаю думать, что добавление может быть более подходящим с учетом объема функций сравнения, которые мне нужно делать в VBA.
Вы также можете написать надстройку Excel в VBA. Чем меньше задействованных технологий, тем меньше им приходится разговаривать друг с другом; в конце концов, это баланс между тем, сколько значение вы даете ряд вещей, которые могут применяться по-разному в зависимости от ваших требований, окружающей среды и опыт:
- Performance - какое решение лучше всего работает?
- Поддержание работоспособности - какое решение проще всего поддерживать?
- Развертывание - какое решение проще всего обновить и развернуть?
- Источник управления - Визуальные крючки Студийные к Team
РазочарованиеFoundation Server и Git; VBE может делать Git с Rubberduck (мой маленький проект моего любимого), но последняя версия по-прежнему остается бета-версией и немного нестабильной (это open-source, поэтому, если вы знаете C#, вы можете внести свой вклад и помочь стабилизировать ее). - Unit Testing - Visual Studio позволяет легко писать и выполнять модульные тесты; VBE может сделать то же самое с Rubberduck, но без надстройки VBE вам придется прибегать к ad-hoc-тестам или разрешать программный доступ к API VBIDE и использовать платформу модульного тестирования на основе VBA.
- 1. Проверка Outlook VSTO надстройка
- 2. Доступная надстройка VSTO
- 3. VSTO Надстройка + Open XML
- 4. Надстройка VSTO Перемещение в офис 365
- 5. VSTO Outlook Надстройка: Zip COM-объект
- 6. Word 2010 надстройка не загружается, VSTO 2010
- 7. PowerPoint VSTO Надстройка - добавить форму с тегом
- 8. Как узнать, загружена ли надстройка VSTO?
- 9. VSTO 2012 PowerPoint Надстройка с макросами
- 10. Надстройка VSTO для взаимодействия с web api
- 11. Надстройка VSTO Excel с Visual Studio Express
- 12. VSTO (надстройка Outlook) Установка развертывания (C#)
- 13. Разрешение имени функции VBA Excel, надстройка против локального модуля
- 14. AutoShape.Adjustments object - 2003 против 2010 или VBA vs. VSTO?
- 15. Надстройка VBA Когда активируется ActiveWorkBook?
- 16. производительности MySQL MSSQL против производительности
- 17. Надстройка Visual Studio для бенчмаркинга производительности
- 18. Почему моя надстройка Outlook VSTO работает при первом запуске?
- 19. Excel VSTO надстройка: Можно ли отключить заголовки Excel в коде?
- 20. Преобразование txt-файлов в Outlook MailItem в C# VSTO Надстройка
- 21. Надстройка VSTO 2010 не открывается в полноэкранном окне
- 22. VSTO Outlook Надстройка, ссылающаяся на внешние библиотеки, не работает
- 23. Надстройка VSTO работает в Office SP3, но не SP2
- 24. показать диалог с окном WPF под Outlook VSTO надстройка
- 25. Надстройка VSTO для MS Project: все задачи отображения сразу
- 26. VSTO Excel надстройка не загружается на сервер терминалов
- 27. установить вручную мое слово надстройка VSTO (Ribbon)? построено с C#
- 28. VSTO «разминка»; Наблюдает ли Outlook, что надстройка загружается быстрее?
- 29. VSTO надстройка не загружается в Word 2010 с Windows XP
- 30. Outlook 2007 vsto надстройка. Получить адрес электронной почты отправителя
Отличный отклик. Более чем достаточно информации. Спасибо. – Flibertyjibbet
Было бы полезно узнать больше об модульном тестировании. Можно ли запускать тесты из CI, например TeamCity? –
@ AndreyKlochkov, если вы полностью отделили свой код VSTO от объектной модели Office, да. В противном случае вам нужно будет запустить Office на сервере CI, и это не то, что я бы рекомендовал. Например, [Rubberduck] (http://rubberduckvba.com) построен на сервере CI, но мы обертываем весь API VBIDE, чтобы иметь возможность сделать это, и использовать [Moq] (https: // github .com/Moq/moq4/wiki/Quickstart) для реализации реализаций для этих интерфейсов. Выполнение кода VBA на сервере CI невозможно. –