Да, F# будет работать лучше.
Вот некоторые результаты проверки производительности для алгоритма единственного потока, реализованного на различных языках (сравнивающий подходов функции активации для нейронных сетей):
C#:
10^7 iterations using Sigmoid1() took 3899,1979 ms
10^7 iterations using Sigmoid2() took 411,4441 ms
Чистый C:
10^7 iterations using sigmoid1: 628 ms
10^7 iterations using sigmoid2: 157 ms
F#:
10^7 iterations using sigmoid1: 588.843700 ms
10^7 iterations using sigmoid2: 156.626700 ms
F# будет вести себя то же как C# для вычислений (так как это - все просто IL). Просто убедившись представить Ваш вектор как структуру - так как Вы будете создавать многие из тех объектов, которые являются недолгими.
Единицы измерения оказывают нулевое влияние на производительность, на самом деле во время компиляции информация о единицах измерения удалена полностью. Таким образом, Вы на самом деле не можете сказать, что Ваш код F# имеет единицы измерения на нем.
Производительность F# о том же как C#, они и компилируются в IL, который является важным фактором (в отличие от IronPython и IronRuby, которые интерпретируются и поэтому намного медленнее). Производительность алгоритма зависит намного больше от, он - реализация, чем на выборе F# или C#, поскольку F# помог бы реализовать его в немногих строках кода, у Вас есть намного лучший шанс определения оптимизаций в F#, чем в C#.
Также эта статья имеет подобное взятие по проблеме перфекта: http://diditwith.net/2008/04/03/ApplesAndOranges.aspx
Возможно, Вы уже знаете, но возможно нет.
Google на имени "Luke Hoban", он сделал трассировщик лучей с C# 3.0 и теперь работает в команде Microsofts F#.
См. также: http://blogs.msdn.com/lukeh/ и http://blogs.msdn.com/lukeh/archive/2007/04/03/a-ray-tracer-in-c-3-0.aspx .
Он должен знать.
На самом деле, в теории, x86 машина может только выполнить x86 блок, который имеет обязательную природу, поэтому, теоретически возможно достигнуть производительности функционального языка обязательно. Таким образом, можно записать программы C#, которые равны или лучше, чем их дубликаты F#. Ключевое слово здесь , может . Это не означает, что все программы C# лучше, чем программы F# или что-либо как этот. Обычно производительность F# очень приемлема в большинстве проблем. Существуют некоторые случаи, где производительность F# отстает слишком много позади C#, но обычно, это хорошо для большинства приложений. Однако, если Вы хотите иметь мелкомодульный контроль на том, что на самом деле делает Ваш код, функциональные языки не для Вас. У Вас есть больше возможности оптимизации в C#, чем Вы имеете в F#. Между прочим, F# я не означаю писать обязательный код, но нормальный функциональный подход (если Вы хотите написать код обязательно, я не думаю, что F# имеет много смысла).
Моя первоначальная реакция - то, что производительность будет тем же и из-за C# и из-за F#, производящего MSIL. Но структуры, которые Вы используете, могли бы оказаться другим IL. Тема была обсуждена подробно в ссылках здесь на ТАК .
F# лучше подходит для параллельного программирования. Так out-of-the поле это может быть быстрее как C# (на мультиядрах/CPU).
, Но с другой стороны, можно оптимизировать C# для использования этого в качестве wel, но это будет намного больше работы.