﻿# V805\. Decreased performance\. It is inefficient to identify an empty string by using 'strlen\(str\) \> 0' construct\. A more efficient way is to check: str\[0\] \!\= '\\0'\.

Анализатор обнаружил конструкцию, которую потенциально можно оптимизировать\. Для того чтобы определить строка пустая или нет, используется функция strlen или аналогичная ей\.

Пример кода:

```cpp
if (strlen(strUrl) > 0)
```

Этот код корректен, однако если он используется внутри длинного цикла или если мы работаем с длинными строками, то такая проверка может быть неэффективна\. Для того чтобы проверить, пустая строка или нет, нам достаточно сравнить первый символ строки с 0\. Оптимизированный вариант:

```cpp
if (strUrl[0] != '\0')
```

Иногда предупреждение V805 помогает выявить избыточный код\. В одном из приложений, был найден приблизительно такой код:

```cpp
string path;
...
if (strlen(path.c_str()) != 0)
```

Скорее всего, такой код появился в ходе неаккуратного рефакторинга, когда тип переменной path был заменен с простого указателя на std::string\. Упрощенный и быстрый вариант:

```cpp
if (!path.empty())
```