Очень похожий вопрос также был задан здесь, на SO, если вы заинтересованы , но, как мы увидим, принятый ответ на этот вопрос не всегда имеет место (и это никогда не относится к моему шаблону использования приложения).
Код, определяющий производительность, состоит из конструктора FileStream (для открытия файла) и хэша SHA1 (реализация платформы .Net). Код в значительной степени является версией С# того, что было задано в вопросе, на который я ссылался выше.
Случай 1: Приложение запускается либо в первый, либо в N-й раз, но с другим набором целевых файлов. Теперь приложению предлагается вычислить хеш-значения для файлов, к которым раньше никто не обращался.
- ~50ms
- 80% конструктор FileStream
- 18% вычисление хэша
Вариант 2: приложение теперь полностью завершено и запущено снова с запросом на вычисление хэша для тех же файлов:
- ~8ms
- 90% вычисление хэша
- 8% конструктор FileStream
Проблема
Мое приложение всегда используется Вариант 1. Никогда не будет предложено повторно вычислить хэш для файла, который уже посещался один раз.
Итак, мой этап определения скорости — это FileStream Constructor! Могу ли я что-нибудь сделать, чтобы ускорить этот вариант использования?
Спасибо.
P.S. Статистика собиралась с помощью профилировщика JetBrains.
FileStreamисточник похоже, что существует множество директив препроцессора, и даже в самых простых путях инициализация кажется довольно сложной. Вы можете указать, с каким именно конструктором у вас возникли проблемы и как выглядит ваша среда, и, надеюсь, люди (намного) умнее меня смогут вам помочь. - person Griswald_911   schedule 03.08.2018FileOptions.SequentialScan? Вы пытались включить многоядерный jit черезProfileOptimization.StartProfile? - person antiduh   schedule 06.08.2018