2015-09-14 2 views
1

У меня есть настройка, в которой мы упаковываем исходный код в пакеты nuget через Team City для развертывания через Octopus deploy. Размер папки, которая упакована, составляет ~ 267 МБ. Этот процесс занимает около 5-6 минут, чтобы упаковать эти файлы. Папка содержит 12 000 файлов и 339 папок. У меня также есть папка размером ~ 183 МБ и имеет 297 файлов и 24 папки. Это займет всего 35 секунд. Любая идея, почему существует такая большая разница во времени при упаковке этих папок с помощью Nuget? Есть ли какие-либо решения, которые помогут вам в производительности?Nuget Pack slow performance

Благодаря

+0

В основном операции с большим количеством меньших файлов медленнее противоположных. Просто сравните копирование одного каталога и другого. – Kamo

ответ

1

NuGet пакетов действительно просто сжатые архивы под капотом, так что производительность вы получите, будет очень похожа на скорости, которые вы видите для сжатия файлов (NuGet только имеет строгое соглашение по структуре в архиве).

Учитывая различное количество файлов, добавляя к одному и тому же общему размеру - все распространенные форматы архивирования обеспечивают более быстрое сжатие и лучшее сжатие (меньший результирующий файл) с меньшим количеством файлов.

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

Любые операции с файлом (которые могут стоить всего лишь небольшую часть времени в одном большом файле) также могут складываться, когда вы имеете дело со многими файлами.

Все это в значительной степени является истинным в разработке программного обеспечения, что бесперебойная работа более эффективна на коротких землях, а не в чате.