Интерактивный F# и профилировщики производительности

Интерактивный F# (и в общих инструментах REPL-стиля) является идеальным входом к профилированию производительности. Что могло быть легче, чем выбрать блок кода и отправить его правильный профилировщику, который возвратится с аналитическим отчетом о производительности. К сожалению, похоже, что у существующих профилировщиков нет поддержки REPL: необходимо или присоединить профилировщика к процессу или указать и исполняемый файл или веб-приложение для профилирования.

Что я заканчиваю тем, что делал, затем переносит блок кода для профилирования в модульном тесте и затем выполняет профиль против сессии командной строки NUnit. Но действительно ли это является лучшим, мы можем сделать прямо сейчас с F#?

12
задан Vagif Abilov 12 July 2010 в 07:19
поделиться

3 ответа

Для этого можно попробовать использовать программный API профилировщика. Я не пробовал, но вот инструкция для профилировщика ANTS: http://help.red-gate.com/help/ANTSProfiler3/0/en/Topics/AP_UsingTheAPI.html

Я думаю, что следующее может быть успешным:

  1. Запустите профилировщик ANTS и прикрепите его к fsi.exe
  2. r "RedGate.Profiler.Api.dll" в fsi

  3. Добавьте код, который вы хотите профилировать, с помощью RedGate.Profiler.Api.Reset () /RedGate.Profiler.Api.TakeSnapshot()

DotTrace имеет (имел?) Похожий API (CPUProfiler.Start () /. StopAndTakeSnapshot ()), но я не смог найти ссылки на последние версии.

4
ответ дан 2 December 2019 в 21:02
поделиться

В чем вопрос?

Вы знаете о команде #time ? Например.

#time "on"
for i in 1..1000000 do
    let r = f(i)
    ignore r

, который дает интерактивный вывод F #, например

--> Timing now on
Real: 00:00:00.000, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0

. В любом случае, я думаю, что просто поместить код в приложение и запустить профиль в приложении лучше, чем тест NUnit. В любом случае, да, вам может потребоваться дополнительные 30 секунд времени, чтобы вставить код в новое приложение и скомпилировать его в режиме выпуска. Но это цена, которую я готов заплатить, чтобы получить обширную информацию о профилировании, которую предоставляет Visual Studio. В идеале опыт мог бы быть лучше, но я сомневаюсь, что вы найдете какие-либо инструменты профилирования, поддерживающие REPL, сегодня (или завтра).

9
ответ дан 2 December 2019 в 21:02
поделиться

Но это лучшее, что мы можем сделать сейчас с F#?

AFAIK, да. Однако это отличная идея для следующей версии F# или стороннего продукта!

1
ответ дан 2 December 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: