Сообщение dotTrace и compiled Regex от 23.08.2016 18:56
Изменено 24.08.2016 13:58 Sharov
Здравствуйте.
Решил сразу к вам обратиться, но тему можно и в дотнет снести.
Странная ситуация: имеется с десяток регулярных выражений, начал играться с RegexOptions.Compiled. Запуская программу отдельно с RegexOptions.Compiled получаю около ~6 сек на отладочных файлах, без этой опции -- ~5.75 сек. Запустил в цикле до 10 итераций для 13 файлов -- 54 сек. vs 56 сек. в пользу некомпилированных регулярок.
Запуская профайлер в комбинациях (Line by line,Tracing)*(Thread cycle time,Wall time,Wall Time CPU instr.) наблюдается преимущество в среднем 5% версии с Compiled, что логично на мой взгляд.
Вопрос, чему верить -- живым прогонам или профайлеру? Профайлер вообще для подобных замеров имеет смысл использовать?
Решил сразу к вам обратиться, но тему можно и в дотнет снести.
Странная ситуация: имеется с десяток регулярных выражений, начал играться с RegexOptions.Compiled. Запуская программу отдельно с RegexOptions.Compiled получаю около ~6 сек на отладочных файлах, без этой опции -- ~5.75 сек. Запустил в цикле до 10 итераций для 13 файлов -- 54 сек. vs 56 сек. в пользу некомпилированных регулярок.
Запуская профайлер в комбинациях (Line by line,Tracing)*(Thread cycle time,Wall time,Wall Time CPU instr.) наблюдается преимущество в среднем 5% версии с Compiled, что логично на мой взгляд.
Вопрос, чему верить -- живым прогонам или профайлеру? Профайлер вообще для подобных замеров имеет смысл использовать?
dotTrace и compiled Regex
Здравствуйте.
Решил сразу к вам обратиться, но тему можно и в дотнет снести.
Странная ситуация: имеется с десяток регулярных выражений, начал играться с RegexOptions.Compiled. Запуская программу отдельно с RegexOptions.Compiled получаю около ~6 сек на отладочных файлах, без этой опции -- ~5.75 сек. Запустил в цикле до 10 итераций для 13 файлов -- 54 сек. vs 56 сек. в пользу некомпилированных регулярок.
Запуская профайлер в комбинациях (Line by line,Tracing)*(Thread cycle time,Wall time,Wall Time CPU instr.) наблюдается преимущество в среднем 5% версии с Compiled, что логично на мой взгляд.
Вопрос, чему верить -- живым прогонам или профайлеру? Профайлер вообще для подобных замеров имеет смысл использовать?
Упдате: вопрос снят, ибо при скомпилированных регулярках приложение видимо чуть дольше грузится, что и дает разницу. Если их стартовать вручноую (после какого-нибудь Console.ReadLine), то compiled версия явно быстрее. Использовал режим tracing и thread cycle time.
Решил сразу к вам обратиться, но тему можно и в дотнет снести.
Странная ситуация: имеется с десяток регулярных выражений, начал играться с RegexOptions.Compiled. Запуская программу отдельно с RegexOptions.Compiled получаю около ~6 сек на отладочных файлах, без этой опции -- ~5.75 сек. Запустил в цикле до 10 итераций для 13 файлов -- 54 сек. vs 56 сек. в пользу некомпилированных регулярок.
Запуская профайлер в комбинациях (Line by line,Tracing)*(Thread cycle time,Wall time,Wall Time CPU instr.) наблюдается преимущество в среднем 5% версии с Compiled, что логично на мой взгляд.
Вопрос, чему верить -- живым прогонам или профайлеру? Профайлер вообще для подобных замеров имеет смысл использовать?
Упдате: вопрос снят, ибо при скомпилированных регулярках приложение видимо чуть дольше грузится, что и дает разницу. Если их стартовать вручноую (после какого-нибудь Console.ReadLine), то compiled версия явно быстрее. Использовал режим tracing и thread cycle time.