Для определенного цикла вы можете добавить прагму:
#pragma loop(no_vector)
На самом деле задокументировано на MSDN (хотя я нашел его там только после того, как узнал об этом ..)
Если вам не нравится добавлять прагму, вы можете выбрать компиляцию с /favor:ATOM
. Это немного взломать, но это позволит вам отключить автоматическую векторизацию, не касаясь источника, и все равно оптимизировать скорость.
В качестве альтернативы есть две стратегии оптимизации: /O1
«оптимизировать размер» и /Os
«благоприятствовать маленькому коду». Автоматическая векторизация генерирует значительно больше кода, поэтому, если вы оптимизируете по размеру, автоматическая векторизация будет отключена.
Недавно я узнал обо всем этом, прочитав поваренную книгу по векторизации . См. Последнюю строку раздела «Правила для тела цикла».
Отказ от ответственности: на самом деле я еще не использую компилятор VS2012 (необходимо поддерживать Win XP), поэтому я не проверял это. Кроме того, переключатели компилятора могут работать по-другому в 2013 году или позже.