Улучшить производительность ATOI ()
Следуя совету Андрея Александреску в его лекции «Написание быстрого кода» на конференции по коду :: Dive 2015, я пытаюсь обеспечить более быстрый эквивалент для ATOI (), но максимизировать отстачную совместимость.
У вас есть устаревший код с использованием atoi (), где вы хотите улучшить производительность строки. Было бы очень легко сделать специализированную подпрограмму строки String-> int, если бы формат ввода был гарантирован, например, каждое число было без знака и ровно четыре цифры длиной. Однако есть случаи, когда строки, отправляемые в ATOI (), поступают от внешнего клиента, поэтому вы не можете удобно предположить, что строки не имеют начального пробела или включают в себя нечетные символы в конце.
Функция atoi () выполняет следующее:
Вот результаты для одной конкретной конфигурации параметров системы/компилятора/компилятора (полная оптимизация).
Диаграмма времени процессора:
Схема прошедшего времени:
Ссылка C ++