Ответ 1
Оба метода отличаются друг от друга. См. Описания для Loop unrolling и Loop tiling.
Прокрутка цикла выполняется для устранения накладных расходов на цикл. Он (обычно) полезен только для довольно маленьких циклов, где число итераций невелико и известно во время компиляции. В основном это делается компилятором.
В более старые времена, когда компьютеры были медленнее, а компиляторы были более примитивны, программисты выполняли ручную петлю, но теперь программисту было бы необычно это делать - за исключением, возможно, очень строгой встроенной системы.
Плитка петли обычно выполняется с очень большими наборами данных. Объект: загрузить некоторые данные в кэш-память и выполнить все операции над ним перед поиском в некоторых новых данных.
В зависимости от выполняемых операций и внутренней организации данных простой цикл может перескакивать на разные страницы данных, вызывая много промахов в кеше (и загрузки страниц). Тщательное планирование порядка исполнения может значительно улучшить время выполнения определенных задач.
В то время как вполне вероятно, что компилятор может выполнить черепицу цикла, бывают случаи, когда программист может сделать это вручную и, возможно, выполнить лучшую работу, чем компилятор.
В общем, не пытайтесь делать эти типы оптимизации, поскольку они добавляют много сложности (и ошибок) к коду и обычно обеспечивают лишь скромный прирост производительности. Однако, если ваш код медленный, а профилирование указывает на определенные типы узких мест, то следует учитывать что-то вроде черепицы цикла и может привести к увеличению производительности.