Я прочитал несколько статей и вопросов / ответов, в которых делается вывод, что лучше всего позволить компилятору JIT выполнять всю оптимизацию для вызовов встроенных функций. Имеет смысл.
А как насчет объявлений встроенных переменных? Оптимизирует ли и их компилятор?
То есть будет ли это:
Dim h = (a + b + c) / 2 'Half-Perimeter
If maxEdgeLength / (Math.Sqrt(h * (h - a) * (h - b) * (h - c)) / h) <= MaximumTriangleAspectRatio Then
'Do stuff here.
End If
Лучше производительность, чем это:
Dim perimeter = a + b + c 'Perimeter
Dim h = perimeter / 2 'Half-Perimeter
Dim area = Math.Sqrt(h * (h - a) * (h - b) * (h - c)) 'Heron's forumula.
Dim inradius = area / h
Dim aspectRatio = maxEdgeLength / inradius
If aspectRatio <= MaximumTriangleAspectRatio Then
'Do stuff here.
End If
Конечно, я предпочитаю последнее, потому что его легче читать и отлаживать, но я не могу позволить себе снижение производительности, если оно существует.
Примечание: я уже определил этот код как узкое место - нет необходимости в возражениях о преждевременной оптимизации. : -)