Кто-нибудь знает, насколько хорошо F # измеряет производительность по сравнению с C #. У меня есть C # raytracer с большим количеством векторных манипуляций, алгоритмов столкновения лучей и т. Д., И я подумал, что они могут быть легче выражены в F #. Я не спрашиваю, насколько хорошо F # умеет выражать математические задачи, на что уже ответили здесь , а скорее стоит ли ожидать лучшей или худшей производительности? Так как трассировка лучей очень сильно влияет на производительность, даже небольшие случаи низкой производительности могут стать проблемой в неправильных местах.
Edit:
Кажется, что по этому вопросу уже есть много вопросов, которые я не смог найти (нет результатов, если вы действительно что-то ищете с помощью термина "F #"). Один хороший момент здесь был следующий ответ:
F # обеспечивает некоторую производительность
особенности, которые могут иметь значение.
Во-первых, реализация
делегатов на .NET в настоящее время довольно
неэффективно и, следовательно, F # использует
свой собственный тип FastFunc для
первоклассный высокопроизводительный
функции.
Во-вторых, F # использует метаданные .NET для
передать встроенные функции, чтобы они
могут быть экспортированы через API и, из
Конечно, это может значительно улучшить
производительность в определенных обстоятельствах.
Наконец, сопоставление с образцом может быть
чрезвычайно трудоемкий, чтобы выразить в C #
потому что языку не хватает шаблона
соответствие, но это почти невозможно
поддерживать оптимизированный код C #
эквивалентно многим нетривиальным образцам
Матчи. Напротив, компилятор F #
агрессивно оптимизирует совпадения
во время компиляции.
И наоборот, компилятор C # лучше
при оптимизации циклов с помощью IEnumerables
и лучше при оптимизации
вычисления над типами значений (например,
комплексная арифметика).
Приветствия, Джон Харроп.