Комментарии 7
Дано: анализатор, который зависает на 86 % прогресса. Что мы делаем? Правильно, оптимизации, а то алгоритм старый... Чтобы что? Чтобы быстрее доходило до зависания?
Странный у вас подход обработки багов. Хорошо хоть пользователь идёт на встречу и проверяет ваши (заведомо неработающие) попытки фикса.
Ничего странного в этом нет. Старый алгоритм исключения путей при воспроизведении проблемы действительно не мог переварить такое большое количество записей и анализ недолго зависал.
Это была рабочая теория, которая пусть и не решила основную проблему, но привела к значительному увеличению быстродействия, поэтому называть её неработающей в корне неправильно.
Ну, я полагаю, что алгоритм не только старый, но и запутанный и недокументированный и проще переписать его заново, чем разбираться, что в нем не работает (если не работает). Тем более, что понятно, как он должен работать и это не нужно из него выяснять.
Логично в таком случае сразу архитектурно-оптимизированно сделать, если опыт позволяет.
Забавно, я где-то год назад воевал с проблемой exclude в MSBuild. Там дескрипторы не утекали, но алгоритмическая сложность обработки exclude была, видимо, квадратичной.
На двух-трех записях тормозов не видно, а на десяти сборка длилась по 30 минут (на проекте из чуть больше тысячи файлов).
Докопал до какого-то обсуждения в форуме, где человек нашел место в исходнике, где был рекурсивный обход всех файлов, и на каждом брался полный путь и делался паттерн-мэтч.
К слову, фича-реквест на exclude при поиске по всем файлам проекта в VisualStudio провисел лет десять, прежде чем его прикрутили в VS2019.
Удалось ли по результатам добавить инспекцию, которая выявляет данный конкретный баг в исходном коде?
Если под инспекцией вы имели ввиду новую диагностику, которая искала бы возможные утечки памяти, то такая в нашем анализаторе уже есть. Например V773. К сожалению, не всегда возможно понять, что тот или иной ресурс утекает, поэтому некоторые ошибки не могут быть найдены, в том числе и во время самодиагностики.
278 гигабайт логов??? Многовато... Мне стало интересно, а сколько это будет в символах. Я посчитал, использовал несколько формул, это 298 миллиардов символов
Как мы баг в PVS-Studio искали или 278 Гигабайтов логов