Информация об изменениях

Сообщение Re[4]: [performance] ладно, заинтриговал от 05.07.2022 5:37

Изменено 05.07.2022 6:13 rg45

Re[4]: [performance] ладно, заинтриговал
Здравствуйте, Quebecois, Вы писали:

Q>
Q>    for (auto d : wstr)
Q>    {
Q>        uint32_t number = (uint32_t)d - (uint32_t)'0';
Q>        if (number <= 9)
Q>        {
Q>            res = res * 10 + number;
Q>        }
Q>        else
Q>        {
Q>            throw std::out_of_range("'" + std::to_string(d) + "': Symbol is out of range");
Q>        }
Q>    }
Q>


Да-да, трюк известный! Я его применял еще на заре своей деятельности как программиста. Но, помнится, как-то раз мне за такое надавали линейкой по рукам и сказали, что "битхаки нам тут не нужны". Мол, современные оптимизаторы (Visual Studio 5.0 ) и сами умеют выполнять такие преобразования, поэтому текст программы должен быть ориентирован на человека, в первую очередь. Можно сказать, травма детства
Re[4]: [performance] ладно, заинтриговал
Здравствуйте, Quebecois, Вы писали:

Q>
Q>    for (auto d : wstr)
Q>    {
Q>        uint32_t number = (uint32_t)d - (uint32_t)'0';
Q>        if (number <= 9)
Q>        {
Q>            res = res * 10 + number;
Q>        }
Q>        else
Q>        {
Q>            throw std::out_of_range("'" + std::to_string(d) + "': Symbol is out of range");
Q>        }
Q>    }
Q>


Да-да, трюк известный! Я его применял еще на заре своей деятельности как программиста. Но, помнится, как-то раз мне за такое надавали линейкой по рукам и сказали, что "битхаки нам тут не нужны". Мол, современные оптимизаторы (Visual Studio 5.0 ) и сами умеют выполнять такие преобразования, поэтому текст программы должен быть ориентирован на человека, в первую очередь. Можно сказать, травма детства

Ну и соображение вдогонку: этот же самый финт можно проделать и в примере на C#. Так что, думаю, что это не та оптимизация, которая способна изменить баланс сил.