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:
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:
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:
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:
if (!path.empty())