2016-12-24 9 views
0

Я написал приложение Visual Basic .NET в Visual Studio для анализа MS Powerpoint и Word Files, преобразования слайдов в jpgs и сохранить содержимое в ElasticSearch. Я хочу убедиться, что при анализе общего сетевого диска, который ни сервер, ни мой клиент резко не замедляются. Как я могу контролировать выполнение и соответствующим образом адаптировать обработку? Какие-нибудь основные методы, чтобы заставить меня начать?Доступность и производительность баланса: Итерировать и обрабатывать более 10 тыс. Файлов MS Office (1 ТБ) с .NET на общем сетевом диске

+0

Прежде чем мы сможем рассказать вам, как его обнаружить, вам нужно быть более конкретным, что означает «замедление» для вас и то, что является приемлемым уровнем потери производительности, прежде чем начать дросселирование. –

+0

В вашем вопросе недостаточно подробностей, чтобы дать полезный ответ. Какова реализация Sever, что такое клиент? Контролировать выполнение чего? – Mick

+0

Опции * очень * ограничены. Вы думаете, что делаете что-то особенное, но люди, которые пишут операционные системы, думают, что это совершенно нормально и что ОС должна просто справиться с этим. Они не ошибаются в этом. Вы можете возиться с значением Thread.CurrentThread.Priority, но вероятность того, что вы увидите какую-либо разницу, низкая. –

ответ

0

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

Простой подход был бы:

  1. Выяснить, сколько IO нагрузки вы хотите создать в лучшем случае, например, не более 5 МБ/с. Это ваша скорость чтения, которую вы не хотите превышать.

  2. Восстановить время перед началом обработки файла.

  3. Извлеките размер файла.

  4. После обработки файла найдите время и вычислите продолжительность.

  5. При обработке файла вы, вероятно, перейдете к скорости чтения. Поэтому после обработки файла вычислите, сколько времени вам придется ждать, чтобы снова подпадать под скорость чтения, а затем ждать. Расчет в основном

WAIT_TIME = размер_файл/read_rate - длительность

Используйте соответствующие блоки, такие как секунды для WAIT_TIME и длительности, байты для FILE_SIZE и байт в секунду для read_rate.

Если wait_time отрицательный, пропустите ожидание.