Если вы пишете какой-нибудь SIMD-код, который будет запускаться другой программой, всегда ли выгодно избавляться от ветвлений для повышения производительности?Я слышал, что даже выполнение дополнительных операций только для того, чтобы избежать if/else
операторов и т. Д., Все еще происходит намного быстрее.
Я спрашиваю об этом, потому что у меня есть некоторые ветвления, которые я делаю, что в основном так:
// axis; x=0, y=1, z=2
float p, q;
if (axis == 0)
{
p = point.y;
q = point.z;
}
else if (axis == 1)
{
p = point.x;
q = point.z;
}
else if (axis == 2)
{
p = point.x;
q = point.y;
}
Можно ли избежать такого разветвления с помощью хитрого трюка?