Компиляция цитаты F #: производительность? - PullRequest
3 голосов
/ 20 августа 2010

У меня есть цитата F #, которой я манипулирую (я добавляю пулы объектов везде, чтобы перерабатывать недолговечные объекты, которые создаются и удаляются очень часто).Я хотел бы запустить полученную цитату;на данный момент я использовал F # PowerPack, который предлагает методы для преобразования цитаты в дерево выражений и делегат, который я запускаю.Не имея доступа к сгенерированному коду, мне стало интересно:

- какова производительность скомпилированного кода?Есть ли какой-то слой отражений, который не был удален или это настоящая компиляция?

  • Могу ли я увидеть сгенерированный код и использовать на нем .Net Reflector?

спасибо:)

Ответы [ 2 ]

5 голосов
/ 21 августа 2010

Последнее, что я посмотрел, это было абсолютно ужасно, примерно в 50 раз медленнее, чем F #, и даже медленнее, чем наивный переводчик.

Честно говоря, я не понимаю, почему они не просто выставили сам компилятор F # как службу времени выполнения (и FSI). У F # было бы намного лучше, если бы они это сделали ...

РЕДАКТИРОВАТЬ: я проверил цитаты, выполняющие функцию Фибоначчи прошлой ночью, и она была на 700 раз медленнее !!!

1 голос
/ 20 августа 2010

Это немного не отвечает, но когда дело доходит до производительности, только вы можете знать, каковы ваши истинные требования к производительности. У вас есть конкретная цель времени выполнения? Вы пробовали запустить скомпилированную цитату? Было ли это достаточно быстро? Вы сравнили его с собственно написанной функцией F #?

Что касается вашего последнего вопроса, я не знаю ни одного простого способа просмотра сборки в памяти в Reflector. Тем не менее, источник F # PowerPack доступен, так что вы можете прочитать его, чтобы увидеть, как именно скомпилированы цитаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...