﻿# V813\. Decreased performance\. The argument should probably be rendered as a constant pointer/reference\.

Анализатор обнаружил конструкцию, которую потенциально можно оптимизировать\. Аргумент, представляющий собой структуру или класс, передается в функцию по значению\. Анализатор, проверяя тело функции, пришел к выводу, что этот аргумент не модифицируется\. С целью оптимизации такой аргумент можно передавать как  константную ссылку\. Это может ускорить выполнение программы, поскольку при вызове функции будет  скопирован только адрес, а не весь объект класса\. Особенно заметна оптимизация, если класс содержит внутри себя большой объем данных\.

Рассмотрим пример:

```cpp
void foo(Point p)
{
  float x = p.x;
  float y = p.y;
  float z = p.z;
  float k = p.k;
  float l = p.l;
  .... далее аргумент 'p' никак не используется....
}
```

Исправить такой код очень легко \- достаточно изменить объявление функции:

```cpp
void foo(const Point &p)
{
  float x = p.x;
  float y = p.y;
  float z = p.z;
  float k = p.k;
  float l = p.l;
  .... далее аргумент 'p' никак не используется....
}
```

Анализатор не выдаёт предупреждение, если структуры очень маленькие\.

**Примечание N1\. **Пользователь может сам указать размер структур, начиная с которого следует выдавать предупреждения\.

Например, чтобы не выдавать сообщения для структур размером 32 байта и менее, можно написать комментарий:

```cpp
//-V813_MINSIZE=33
```

Число 33 задаёт размер структуры, начиная с которого следует выдавать предупреждения\.

Можно разместить комментарий в одном из глобальных файлов \(например в [StdAfx\.h](https://pvs-studio.ru/ru/blog/posts/cpp/0265/)\), чтобы комментарий начал оказывать влияние на весь проект\.

Значение по умолчанию: 17\.



**Примечание N2\.** Анализатор может ошибаться, пытаясь понять, модифицируется переменная в теле функции или нет\. Если вы заметили явно ложное срабатывание, просьба прислать нам соответствующий пример кода\.

Если код корректен, то избавиться от ложного сообщения об ошибке можно добавив комментарий "//\-V813"\.