exponenta event banner

Дефекты рабочих характеристик

Дефекты, влияющие на производительность кода C++

Эти дефекты обнаруживают проблемы, которые могут привести к узким местам в коде C++. Обнаруженные проблемы включают в себя:

  • Проблемы, которые непреднамеренно вызывают копирование вместо операций перемещения

  • Неэффективное или ненужное создание временной переменной

  • Использование функции, имеющей, возможно, более эффективную альтернативу

Результаты Polyspace

развернуть все

A move operation may throwОперации перемещения могут привести к созданию контейнеров STL с использованием соответствующих операций копирования
Const parameter values may cause unnecessary data copiesЗначения параметра Const могут предотвратить операцию перемещения, что приведет к более ресурсоемкой операции копирования
Const return values may cause unnecessary data copiesВозвращаемые значения Const могут предотвратить операцию перемещения, что приведет к более ресурсоемкой операции копирования
Const rvalue reference parameter may cause unnecessary data copies const-ness ссылки на значение rvalue предотвращает предполагаемую операцию перемещения
Const std::move input may cause a more expensive object copyКонстанта std::move ввод не может быть перемещен, что приводит к более дорогостоящей операции копирования
Empty destructors may cause unnecessary data copiesОбъявленные пользователем пустые деструкторы предотвращают автогенерацию конструкторов перемещений и операторов назначения перемещений
std::move called on an unmovable typestd::move используется для типа класса без конструктора перемещения или оператора назначения перемещения
Expensive constant std::string constructionОбъект постоянной строки создается из постоянных данных, что приводит к неэффективному коду
Expensive copy in a range-based for loop iterationПеременная цикла на основе диапазона for цикл копируется из элементов диапазона вместо ссылки, что приводит к неэффективному коду
Expensive local variable copyЛокальная переменная создается путем копирования из const ссылка и не измененные позже
Expensive pass by valueПараметр может быть дорогостоящим для копирования
Expensive return by valueФункции возвращают большие выходные данные по значению, а не по ссылке или указателю
Missing constexpr specifierconstexpr спецификатор может использоваться в выражении для вычисления времени компиляции
Expensive std::string::c_str() use in a std::string operationСтроковая операция использует выходные данные std::string::c_str способ, приводящий к неэффективному коду
Expensive use of non-member std::string operator+() instead of a simple appendНеучастник std::string operator+() вызывается при добавлении (или +=) метод был бы более эффективным
Expensive use of std::string methods instead of more efficient overloadОдин std::string метод вызывается со строковым литералом известной длины вместо одного символа в кавычках
Expensive use of std::string with empty string literalИспользование std::string с пустой строковой литерал может быть заменен менее дорогостоящими вызовами std::basic_string функции-члены
Inefficient string length computationДлина строки, вычисляемая с помощью функций длины строки при возврате из std::basic_string::c_str() вместо использования std::basic_string::length()
std::endl may cause an unnecessary flushstd::endl используется вместо более эффективного \n
Use of new or make_unique instead of more efficient make_sharedИспользуя new или make_unique для инициализации или сброса shared_ptr приводит к дополнительному выделению памяти
Expensive logical operationЛогическая операция требует оценки обоих операндов из-за их порядка, что приводит к неэффективному коду

Темы

Группы дефектов для поиска ошибок

Проверки дефектов Bug Finder подразделяются на такие группы, как поток данных, параллелизм, числовые и т. д.