В конце 90-х знакомый оптимизировал рисование линий на CPU. Возникла идея - развернуть цикл на максимально возможную длину линии, а потом - делать JMP на остаток.
Если кто не знает, рисование линий (даже со сглаживанием) - достаточно простая целочисленная математика. Упрощено - вначале готовишь набор коофициентов, потом - бежишь по циклу, инкриментируя счётчики этими коофициентами.
Так вот, развертывание не помогло, а - замедлило. Развернутый цикл не влез в кеш процессора и много времени стало уходить на чтение из оперативки.
В конце 90-х знакомый оптимизировал рисование линий на CPU. Возникла идея - развернуть цикл на максимально возможную длину линии, а потом - делать JMP на остаток.
Если кто не знает, рисование линий (даже со сглаживанием) - достаточно простая целочисленная математика. Упрощено - вначале готовишь набор коофициентов, потом - бежишь по циклу, инкриментируя счётчики этими коофициентами.
Так вот, развертывание не помогло, а - замедлило. Развернутый цикл не влез в кеш процессора и много времени стало уходить на чтение из оперативки.