Я использую F # почти шесть месяцев и был настолько уверен, что F # Interactive должен иметь такую же производительность, как и скомпилированный, что, когда я потрудился сравнить его, я убедился, что это какая-то ошибка компилятора. Хотя теперь мне кажется, что я должен был проверить здесь сначала, прежде чем открывать проблему.Является ли F # Interactive более медленным, чем скомпилировано?
Для меня это примерно в 3 раза медленнее, и переключатель оптимизации, похоже, ничего не делает.
Должно ли это быть стандартным поведением? Если это так, меня действительно тронула директива #time. У меня есть время на то, сколько времени потребуется, чтобы суммировать 100M элементов на этом Reddit thread.
Update:
Благодаря FuleSnabel, я обнаружил некоторые вещи.
Я попытался запустить сценарий примера из fsianycpu.exe
(который является F # Interactive по умолчанию) и fsi.exe
, и я получаю разные тайминги для двух прогонов. 134ms для первого и 78ms для более позднего. Эти два тайминга также соответствуют таймингам из неоптимизированных и оптимизированных бинарных файлов соответственно.
Что еще более сбивает с толку, так это то, что первый проект, который я использовал для компиляции вещи, является частью игровой библиотеки (в форме скрипта), которую я делаю, и отказывается скомпилировать оптимизированный двоичный файл, вместо этого переключается на неоптимизированный, не сообщив мне. Я должен был начать новый проект, чтобы он мог правильно компилироваться. Удивительно, что другой тест был составлен правильно.
Так что в принципе, что-то фанки происходит здесь, и я должен пересмотреть fsianycpu.exe
на fsi.exe
в качестве интерпретатора по умолчанию.
Я не думаю, что кто-то может рассказать вам больше, чем то, что уже есть в Reddit - почему бы вам просто не подождать вашего билета в github? – Carsten