Цитата(Jenya7 @ Jul 20 2017, 18:57)

Код
char* itoa(uint32_t val /*,int base*/)
{
static char buf[32] = {0};
int i = 30;
//for(; val && i; --i, val /= base)
for(; val && i; --i, val /= 10)
//buf[i] = "0123456789abcdef"[val % base];
buf[i] = "0123456789abcdef"[val % 10];
return &buf[i+1];
}
Жесть какая... Это что??? Зачем цикл до 30? Зачем эта дикая const строка??
Напоминаю: указанная библиотечная функция
возвращает значение в буфере пользователя. Понятно, что если выкинуть эту операцию, то будет быстрее. Но так можно и вообще всё выкинуть.
Также - указанная библиотечная функция (и моя реализация) реентерабельны и потокобезопасны, ваша - нет.
Даже если проигнорировать все эти недостатки, измерим (для входного аргумента == 3000000003) получаем:
мой код == 165 тактов;
ваш == 196 тактов.
Что и неудивительно.
Цитата(Jenya7 @ Jul 20 2017, 18:57)

первый представленный вариант я выбрал после сравнения 5 или 6 вариантов. ваш я даже сравнивать не буду. и так все понятно.
Понятно что?