Дефекты эффективности

Дефекты, которые влияют на эффективность Кода С++

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

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

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

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

Результаты 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 copiesconst- мыс rvalue ссылки предотвращает предназначенную операцию пересылки
Const std::move input may cause a more expensive object copyConst 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 overloadstd::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

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