﻿# 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'\.

The analyzer detected a construct that can be optimized\. To determine whether a code string is empty or not, the strlen function or some other identical function is used\.

For example:

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

This code is correct, but if it is used inside a long loop or if we handle long strings, such a check might be inefficient\. To check if a string is empty or not, we just have to compare the first character of the string with 0\. This is an optimized code:

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

Sometimes the V805 warning helps to detect excessive code\. In one application we have found a code fragment like the following one:

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

Most likely, this code appeared during careless refactoring when the type of the path variable had been changed from a simple pointer to std::string\. This is a shorter and faster code:

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