hexlet-basics / exercises-csharp

5 stars 27 forks source link

Небольшая оптимизация: использование .dll из пакета с PowerAssert'ом напрямую, на не через `#r` директиву. #4

Closed Jeka-Vasiliev closed 3 years ago

Jeka-Vasiliev commented 3 years ago

Я подебажил немного dotnet script. Оказывается он неявно создает файл script.csproj во временной папке, и использует его для восстановления зависимостей, т.е. вызывает внутри себя dotnet restore. Все nuget пакеты, указанные в вызываемых скриптах через директиву #r, dotnet script добавляет в этот созданный script.csproj, и они скачиваются перед первым запуском. Указание .dll напрямую экономит немного времени на сетевых запросах к nuget-репозиторию. На моей машине это дало ~800мс прироста.

script.csproj кешируется после первого запуска, и я пытался еще сделать прогрев этого кеша через вызов make test прямо в DOCKERFILE. В теории это должно было еще сэкономить прилично времени, т.к. dotnet restore не вызывался бы вообще. Но на моей машине это наоборот замедлило запуск раза в 2. Буду разбираться

mokevnin commented 3 years ago

воу! вот это крутяк