Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3255|Ответ: 2

[Источник] .NET/C# Высокая производительность объединяет несколько файлов в один файл

[Скопировать ссылку]
Опубликовано 2024-2-14 12:04:26 | | | |
Требования: При загрузке больших файлов по частям бэкенд должен объединять разные блоки в один файл по порядку, а при вырезке архивного файла — объединять вырезанные файлы с исходным файлом.

Linux использует разделение файлов для разделения файлов
https://www.itsvse.com/thread-10716-1-1.html

Сначала подготовьте два файла по 100M для тестирования со следующей командой:

Windows создаёт файл указанного размера
https://www.itsvse.com/thread-10732-1-1.html

Код таков:


Были протестированы два разных сценария слияния. Как показано ниже:



Начните тестирование с помощью отладки VS 2022 -> Profiler -> галочки ".NET Object Allocation Trace":



merge1 общий размер: 16 778 034, merge2 общий размер: 164 270,Общее распределение показывает, что merge1 в 102 раза больше merge2, и чем он больше, тем хуже производительность

Используйте PerfView для отдельного анализа стеков CPU и GC Heap Net Mem Stacks, как показано на следующем рисунке:



Замечание:Inc% — Инклюзивная стоимость выражается в процентах от общей стоимости всех образцов(100% для корневых узлов). Её можно отсортировать по ней.





Предыдущий:Windows создаёт файл указанного размера
Следующий:Введение и различия между компиляцией JIT и AOT в .NET
 Хозяин| Опубликовано 2024-2-14 12:09:30 |
Тестируйте с VS 2022 Debug -> Performance Profiler -> отметьте "Memory Usage":

  • merge1 занимает 808 МБ при выполнении
  • merge2 занимает 12 МБ при выполнении




Если метод merge2 выполняется отдельно, программа запускается на 6 МБ и всегда занимает 6 МБ во время выполнения функции и после её завершения.
 Хозяин| Опубликовано 2025-1-1 10:20:06 |
Оптимизируйте стиль письма

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com