Хардкорные программисты на Си и два кода

Олег Андреев комментирует мою недавнюю заметку об оптимизации:

Хардкорные программисты на Си, пишущие сложные алгоритмы, делают так: пишут кусок кода в лоб, понятно и просто. Когда в нем баги исправлены, рядом (отдельно, не вперемешку) пишется версия того же кода, только более эффективная. Пользы у такого подхода много:

  1. Весь код по теме находится рядом и в одном контексте — не нужно искать его в разных местах и (главное!) не нужно создавать дополнительных функций/интерфейсов для передачи необходимых данных туда, где происходит дальнейшая оптимизация.
  2. Если что-то нужно изменить в логике, то сразу понятно где и как это можно сделать в «медленной» версии. Внеся и протестировав изменения, можно затем переписать оптимизированную версию.
  3. Если что-то накосячено в оптимизированной версии, а сейчас нет человека или времени разбираться, можно переключиться обратно на медленную.
#if SLOW

    for (int i = 0; i <= 100; i++)
    {
        // медленный, но читаемый код, который полностью передает смысл
    }

#elsif FASTER

    vDSP_ctoz (
        (COMPLEX *) originalReal, 
        2,             // stride 2, as each complex # is 2 floats
        &A, 
        1,             // stride 1 in A.realP & .compP
        nOver2         // n/2 elts
    );

#endif
Подписаться на блог
Отправить
Дальше
Мои книги