Высокий трафик c при открытии сетевого каталога, включая исполняемые файлы, созданные с помощью Delphi XE с windows explorer - PullRequest
4 голосов
/ 08 апреля 2020

Я начал работать в домашнем офисе и подключил свои Windows 10 ПК к сетевым дискам компании через VPN. Я заметил, что в VPN было много трафика c, и попытался выяснить, почему. Я заметил, что когда я открываю каталог с помощью Windows Explorer на сетевом диске, скорость передачи данных увеличивается на сотни МБ. Итак, я начал некоторые тесты. Я отключил все антивирусные сканеры и т. Д., Которые могли получить доступ к сетевому диску и делали несколько копий одного и того же файла, пока в каталоге не было 1 ГБ. Я создал один каталог только с PDF-файлами, один с исполняемым файлом другой компании и один с исполняемыми мной. Стандартное приложение Delphi XE. Что я узнал:

  1. Если есть каталог, включающий только PDF-файлы. Есть только небольшой трафик c
  2. Если есть каталог с исполняемым файлом другой компании, например, редактор «Affinity» graphi c. Также есть только небольшой траффи c
  3. Если есть исполняемый файл, созданный мной с Delphi XE. Существует более 1 ГБ трафика c. Windows Explorer показывает файлы, но не значки. После передачи всех данных значки отображаются по одному.

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

1 Ответ

3 голосов
/ 08 апреля 2020

Хотя я не уверен в этом, я предполагаю, что причиной этого является размер секции ресурсов Delphi исполняемых файлов.

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

Delphi, с другой стороны, хранит гораздо больше информации в этом разделе ресурсов, например:

  • несколько курсоров мыши по умолчанию
  • несколько растровых изображений, в которых хранятся несколько стандартных значков, которые могут отображаться на различных кнопках
  • исполняемые значки
  • несколько строк по умолчанию, которые могут отображаться в различных сообщениях об ошибках
  • RCData, которая содержит информацию обо всех включенных пакетах и ​​всех DFM, которые необходимы для создания форм с тем же макетом, который был разработан во время разработки.
  • информация о версии
  • встроенный манифест
  • и, конечно, все другие ресурсы, которые вы добавили в свой проект

Из-за всего этого ресурсный раздел файлов Delphi может легко превышать размер нескольких МБ. Вы можете использовать одно из различных средств просмотра ресурсов PE или редакторов ресурсов, чтобы лучше понять, что именно хранится в разделах ресурсов исполняемых файлов. Для этого я чаще всего использую PE Explorer .

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

...