Оптимизация производительности оператора for-loop/switch-statement

пожалуйста, помогите мне определить, какой из следующих кодов является более оптимизированным?

for(int i=0;i<count;i++)
{
    switch(way)
    {
        case 1:
            doWork1(i);
            break;
        case 2:
            doWork2(i);
            break;
        case 3:
            doWork3(i);
            break;
    }
}

ИЛИ

switch(way)
{
    case 1:
        for(int i=0;i<count;i++)
        {
            doWork1(i);
        }
        break;
    case 2:
        for(int i=0;i<count;i++)
        {
            doWork2(i);
        }
        break;
    case 3:
        for(int i=0;i<count;i++)
        {
            doWork3(i);
        }
        break;
}

В первом случае возникают накладные расходы, связанные с всегдапроверкой условия переключения на каждой итерации. Во втором случае накладных расходов нет. Я чувствую, что второй случай намного лучше. Если у кого-то есть другой обходной путь, пожалуйста, помогите мне, предложив его.

7
задан Tim Schmelter 26 June 2012 в 07:35
поделиться