У меня следующая ситуация:
1. Есть программа, состоящая из интерфейсной части и модуля, делающего расчёты. Всё написано при помощи MFC.
2. Модуль, который делает расчёты, очень требовательный к скорости.
3. Интерфейс написан очень криво, и поддерживать программу с таким кодом очень сложно. Поэтому лучше всего его переписать. Я думаю, проще всего это сделать на C#, или managed C++.
4. Расчётный модуль переписывать не имеет смысла. Перенести его на C# сложно, но на managed C++ — запросто.
Так вот, у меня следующие вопросы:
1. Если расчётный модуль перенести на managed C++, то насколько упадёт скорость его работы? Дело в том, что в этом модуле идёт активное выделение и освобождение памяти.
2. Я слышал мнение, что если расчётный модуль оставить не перенося на managed C++, и подключить его из C# в виде, скажем, COM-объекта, то возникнет огромная потеря в скорости из-за вызова unmanaged-кода из managed-кода. Правда ли это?
3. Так всё-таки, какой вариант расчётного будет работать быстрее? Написанного на managed C++, или на unmanaged C++, вызванного из managed-кода?