Я довольно компетентный программист на Java, который очень новичок в C. Я пытаюсь оптимизировать процедуру, которая имеет четыре режима работы.
Я петлю по всем пикселям изображения и вычисляю новое значение пикселя в зависимости от переданного "режима".
Мой вопрос касается накладных расходов оператора switch в двух вложенных циклах. Меня бы интересовали любые ссылки на документацию относительно относительной эффективности основных операторов С, математических и логических операций.
Код будет выглядеть следующим образом:
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
switch (mode) /* select the type of calculation */
{
case 0:
weight = dCentre / maxDistanceEdge;
case 1:
weight = (float)x/width;
break;
case 2:
weight = (float)y/height;
break;
case 3:
weight = dBottomLeft / maxDistanceCorner;
break;
case 4:
weight = dTopRight / maxDistanceCorner;
break;
default:
weight = 1;
break;
}
// Calculate the new pixel value given the weight
...
}
}
Ожидаете ли вы увидеть большие накладные расходы, если это будет за изображение размером 5000 х 5000 пикселей? Я попытался провести некоторое тестирование, но мои результаты повсюду, так как система (мобильное устройство) имеет всевозможные элементы, работающие в фоновом режиме, которые могут искажать результаты.
Другой вариант - иметь отдельный метод для каждого режима, каждый со своими четырьмя циклами. Это, очевидно, приведет к избыточному коду, но эффективность здесь - название игры.
Спасибо заранее!
Гав