У меня есть следующий код, который примерно в 7 раз быстрее, чем inet_addr. Мне было интересно, есть ли способ улучшить это, чтобы сделать его еще быстрее или если существует более быстрая альтернатива.
Этот код требует, чтобы действительный нулевой IPv4-адрес был указан без пробелов, что в моем случае всегда так, поэтому я оптимизирован для этого случая. Обычно у вас будет больше проверки ошибок, но если есть способ сделать следующее даже быстрее или более быстрая альтернатива, я бы очень признателен.
UINT32 GetIP(const char *p)
{
UINT32 dwIP=0,dwIP_Part=0;
while(true)
{
if(p[0] == 0)
{
dwIP = (dwIP << 8) | dwIP_Part;
break;
}
if(p[0]=='.')
{
dwIP = (dwIP << 8) | dwIP_Part;
dwIP_Part = 0;
p++;
}
dwIP_Part = (dwIP_Part*10)+(p[0]-'0');
p++;
}
return dwIP;
}