Я построил первоначальный прототип полностью на C #, но производительность не так хороша, как ожидалось.
тогда у вас есть два варианта:
Создайте еще один прототип на C ++ и посмотрите, как он сравнивается, или оптимизируйте код C #. Независимо от того, на каком языке вы пишете, ваш код не будет быстрым, пока вы не профилируете и не оптимизируете, не профилируете и не оптимизируете его. Это особенно верно в C ++. Если вы напишите самую быструю реализацию в C # и сравните ее с самой быстрой реализацией в C ++, то версия C ++, скорее всего, будет быстрее. Но это будет стоить с точки зрения времени разработки. Это не просто написать эффективный код на C ++. Если вы новичок в этом языке, вы, скорее всего, будете писать очень неэффективный код, особенно если вы работаете с C # или Java, где все происходит по-другому и требует разных затрат.
Если вы просто напишите работающую реализацию, не слишком заботясь о производительности, то я предполагаю, что версия C #, вероятно, будет быстрее.
Но это действительно зависит от того, какая производительность вам нужна (и не в последнюю очередь от того, насколько дорогими являются операции, которые вам нужно выполнить. С переходом от управляемого к нативному коду связаны накладные расходы, поэтому оно того не стоит для коротких операций, которые выполняются часто.
Код обработки чисел в C ++ может быть таким же быстрым, как и код, написанный на Fortran (давать или брать несколько процентов), но для этого вам нужно использовать множество расширенных методов (шаблоны выражений) и множество метапрограммирования) или несколько довольно сложных библиотек, которые реализуют это для вас.
Это того стоит? Или C # может быть сделан быстро достаточно для ваших нужд?