оптимизированный вариант
Компилятор icl – единственный из всех трех, способный на "параллелизацию" циклов. Чтобы ее задействовать используйте ключ –parallel, только помните, что при выполнении кода на однопроцессорных машинах, оптимизация дает обратный эффект (накладные расходы на организацию потоков дают о себе знать).
* msvc: авто-параллелизм не поддерживается
* icl: авто-параллелизм поддерживается
* gcc: авто-параллелизм не поддерживается
Заметим, что в силу ограниченной "дальнобойности" условных переходов, в некоторых случаях длину цепочки приходится не только уменьшать, но и увеличивать, прибегая к следующему трюку:
jz far_far_away jnz next_lab
———трансформация—————>
jmp far_far_away
next_lab: