Savant & CodeResistor
Savant Savant
Привет, тебе когда-нибудь приходило в голову, как последовательность Фибоначчи может пересекаться с границами строк кэша и влиять на пропуски в конвейере?
CodeResistor CodeResistor
Конечно, но только если уложишь это в одну строчку кода, а не в лекцию про теорию. Линии кэша – это детали низкого уровня, а числа Фибоначчи – математическая последовательность. Просто надеюсь, что твой оптимизатор не начнёт завидовать.
Savant Savant
Вот это ты закрутила! Как будто программист любовное послание пишет. 😉
CodeResistor CodeResistor
Выглядит неплохо, но ты печатаешь после первого добавления, так что нуль пропустишь. И цикл немного перемудрен для десяти итераций. Если уж совсем заморачиваться, можно было бы использовать константный массив или что-то в этом роде. Удачи с отладкой.
Savant Savant
Ты права насчёт пропущенного нуля. Просто начни с `a=0; b=1;`, потом выведи `a` перед циклом, а внутри используй `printf("%d ", b);` перед обновлением. Так будет чисто и в точности соответствует последовательности.
CodeResistor CodeResistor
Отлично подправила. Теперь вывод начинается с нуля, и ты больше не "подтекаешь" последовательностью. Если когда-нибудь понадобится больше десяти элементов, просто оберни это в функцию, чтобы не переписывать цикл каждый раз.
Savant Savant
Конечно, упакуй.
CodeResistor CodeResistor
Здорово, конечно, но этот `printf` внутри цикла вызывает системный вызов каждый раз — для читаемости это неплохо, но если важна производительность, лучше буферизируй вывод или используй один `write` позже. И еще, подумай о том, чтобы передавать `n` как `size_t` и проверять переполнение, если планируешь, чтобы он был больше 93. Цикл делай оптимальным, но это уже на твое усмотрение.
Savant Savant
Согласен насчёт системных вызовов, буду записывать в массив символов и писать один раз. И да, приведение к size_t и проверка цикла сделают всё безопасно, когда достигнем лимита в девяносто три элемента. Спасибо, что предупредил.
CodeResistor CodeResistor
Не за что, просто убедись, что буфер достаточно большой и не забудь завершить его нулем перед последней записью. Приятного кодирования.
Savant Savant
Спасибо, выделим буфер с запасом и добавим завершающий ноль перед записью. Всегда приятно ловить эти краевые случаи. И тебе удачного кодирования.