VB.NET Избранные варианты оптимизации компилятора? - PullRequest
2 голосов
/ 04 февраля 2010

Оптимизирует ли компилятор VB.NET 2008 выборочную выборку операторов?

Например, оператор Select Case с достаточным количеством целочисленных регистров может быть организован как бинарный поиск.

Я спрашиваю об этом, потому что мне любопытно, стоит ли мне выбирать вариант выбора вместо операторов If с несколькими остальными If, где сравниваются целые числа или другие основные типы данных.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010

В общем, вам следует беспокоиться о читабельности и удобстве сопровождения кода сверх этого вида микрооптимизации производительности.

Если этот переключатель не находится внутри цикла, который выполняется тысячи (миллионы?) Раз, это вряд ли будет препятствием для производительности вашего приложения.

Примите решение и придерживайтесь его ради последовательности. В общем, не настраивайте код настройки производительности, пока не проанализируете узкие места производительности.

См. Также этот вопрос .

1 голос
/ 06 февраля 2010

Select Case с 40 вариантами более чем в 10 раз быстрее, чем строка из 40 ElseIf операторов.Это большее улучшение, чем вы ожидаете получить с помощью бинарного поиска.Я бы предположил, что простое целое число Select Case использует любой современный вычислительный код, эквивалентный вычисляемому оператору goto, - оно компилируется так, что оно непосредственно переходит в соответствующий "case" на основе значения целого числа.1005 * Я думаю, Select Case - это тот, с кем можно пойти.

...