Условный порядок выписки по частоте или времени вычисления?
Допустим, у меня есть 100 различных условий в выражении IF-ELSE.
if((boolean = methodA)){
...
}
else((boolean = methodZ)){
...
}
Логически, я думаю, что наименее возможное условие должно идти к последнему условию (то, которое имеет метод Z), а наиболее частое условие должно переходить к первому условию (метод А).
Тогда я подумал: "А что, если methodA отнимает много времени?". methodZ занял бы больше времени, чем достигнуть, даже если это наименее часто. Должен ли я упорядочить условия по времени вычислений? Или заказать их по частоте?
Что было бы хорошим подходом к решению этой дилеммы?
2 ответа
Допустим, у меня есть 100 различных условий в выражении IF-ELSE
Если вам это удастся сделать в реальных приложениях, то у вас есть огромная проблема проектирования, более важная для решения, чем измерение времени для оценки условий.
Должен ли я упорядочить условия по времени вычислений? Или заказать их по частоте?
Там нет точного ответа на это. Первое, что нужно сделать, это просто написать условия, затем использовать профилировщик в своем приложении и оценить, действительно ли некоторые из условий являются проблемой в вашем коде. Если вы обнаружите, что один из них сильно загружен ЦП, начните специальный анализ, чтобы улучшить его.
Вам нужно подвести баланс. Время, которое нужно рассчитать, относится не только к методам, но и ко всей транзакции. Если метод Z завершается за 1/100 времени метода A, а частота метода Z меньше 100-й от метода A, то его следует переместить на вершину.