Параметры компилятора scalac -deprecation и -unchecked делают его медленнее

Как ни странно, наши сборки кажутся медленнее после включения этих опций. Я немного поискал в Интернете и попытался провести некоторые сравнения, но не нашел ничего убедительного. Интересно, знает ли кто навскидку.


person dyross    schedule 26.09.2012    source источник


Ответы (2)


Если ваш рабочий стол не является телетайпом с особенно медленными электромеханическими релейными переключателями, вы в безопасности — он в любом случае работает одинаково, поэтому, если бы была разница, она заключалась бы в том, сколько времени требуется для отображения предупреждений об устаревании / непроверенных.

person psp    schedule 26.09.2012
comment
Удивительно, насколько сильно это может повлиять на вывод материала на экран. Если я открою git bash под окнами и сделаю время для i в {1..40000}; сделать эхо foobar $i; готово, если я сворачиваю окно, это занимает в среднем 3 секунды. Если я оставлю окно не свернутым, оно занимает в среднем около 12. Не то, чтобы я думаю, что это причина медлительности компилятора :-) Но тем не менее интересно. - person Matthew Farwell; 26.09.2012
comment
Что, кстати, для большой сборки maven с большим количеством результатов тестов > 85k строк, разница составляет 4 минуты против 8 минут. - person Matthew Farwell; 26.09.2012
comment
Но если у вас есть 40000 предупреждений об устаревании, у вас, вероятно, есть проблемы посерьезнее, чем 9 секунд времени компиляции. - person Luigi Plinge; 26.09.2012
comment
@LuigiPlinge Я определенно согласен с этим. - person Matthew Farwell; 27.09.2012

Отличный способ ответить на свой вопрос — попытаться измерить его. Например, я пытался скомпилировать с помощью SBT (что дает время сборки в секундах). Я взял проект среднего размера (78 исходных файлов scala), который попытался скомпилировать с флагами и без них. Я начал с выполнения 3 вызовов очистки/компиляции для прогрева дисков (убедитесь, что все правильно кэшируется контроллером и ОС). Затем я измерил 3 раза время сборки, чтобы получить среднее значение.

В обоих случаях (с флагами и без) время сборки было одинаковым. Однако интересно отметить, что первая прогревочная сборка была очень медленной: почти в 7 раз медленнее! Поэтому очень трудно полагаться на впечатления, потому что время сборки будет определяться тем, как вы получаете доступ к своим исходным файлам.

person paradigmatic    schedule 26.09.2012