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

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

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

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

  • Неэффективные функции для вставки новой строки и расчета длины строки

Результаты 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 std::move input may cause a more expensive object copyConst std::move введите не может быть перемещен и результаты в более дорогой операции копии
Empty destructors may cause unnecessary data copiesОбъявленные пользователями пустые деструкторы предотвращают автоматическую генерацию конструкторов перемещения и перемещают операторы присваивания
Expensive constant std::string constructionconst объект строки создается форма постоянные данные, приводящие к неэффективному коду
Expensive copy in a range-based for loop iterationПеременная цикла основанного на области значений for цикл копируется с элементов области значений вместо того, чтобы быть сосланным, приводя к неэффективному коду
Expensive std::string::c_str() use in a std::string operationstd::string операция использует выход std::string::c_str метод, приводящий к неэффективному коду
Expensive pass by valueПараметр может быть дорогим, чтобы скопировать
Expensive return by valueФункции возвращают крупносерийный выходной параметр значением вместо ссылкой или указателем
Inefficient string length computationДлина строки, вычисленная при помощи длины строки, функционирует по возврату из std::basic_string::c_str() вместо того, чтобы использовать std::basic_string::length()
Missing constexpr specifierconstexpr спецификатор может используемый по выражению для оценки времени компиляции
std::endl may cause an unnecessary flushstd::endl используется вместо более эффективного \n
std::move called on an unmovable typestd::move используемый на типе класса без конструктора перемещения или оператора присваивания перемещения

Темы

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

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