Исправление cvv, (текущая версия) :
Переделал на:
void SampleProcessor::ComputeGpioVal(unsigned int gpioVal, string& gpioStr)
{
unsigned int i;
i = 1 << (sizeof(gpioVal) * 8 - 1);
gpioStr.clear();
gpioStr.reserve(5);
while (i > GPIO_MASK_LIMIT)
{
if (gpioVal & i)
gpioStr += "1";
else
gpioStr += "0";
i >>= 1;
}
}
получил уменьшение общего времени выполнения этой ф-и с 35% до 21%. А также malloc() улетел вниз по количеству вызовов и соответсвенно потреблению ресурсов.
Исходная версия cvv, :
Переделал на:
void SampleProcessor::ComputeGpioVal(unsigned int gpioVal, string& gpioStr)
{
unsigned int i;
i = 1 << (sizeof(gpioVal) * 8 - 1);
gpioStr.clear();
gpioStr.reserve(5);
while (i > GPIO_MASK_LIMIT)
{
if (gpioVal & i)
gpioStr += "1";
else
gpioStr += "0";
i >>= 1;
}
}
получил уменьшение общего времени выполнения этой ф-и с 35% до 21%.