Отображения каталога количество товара


У меня есть простое количество дисплей функция, которая выполняется для каждого продукта отображается в нашем каталоге. В MaxQtyDisplay значение в нашей сети.файл config. Часть меня думает, что функция является обтекаемым и часть меня думает, что это можно исправить где-то. Поскольку эта функция вызывается много раз в нашем веб-приложения, я хотел бы быть оптимизированы наилучшим образом.

Что можно сделать, чтобы ее улучшить?

Private Shared Function CalculateQtyDisplay(ByVal x As Double, ByVal y As Double) As Double
    Dim q As Double = x - y
    If q > 0 And q <= My.Settings.MaxQtyDisplay Then
        Return q
    ElseIf q > My.Settings.MaxQtyDisplay Then
        Return My.Settings.MaxQtyDisplay
    Else
        Return 0
    End If
End Function


432
4
задан 25 апреля 2011 в 05:04 Источник Поделиться
Комментарии
1 ответ

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


  • Оценки и работы в условиях требуется только в случае, если Д > 0

  • Вы действительно хотите использовать атакже применять короткое замыкание в первое условие

  • м > MaxQtyDisplay является излишним, поскольку данное условие не иначе (забыв отрицательными количествами, но мы решаем, что решение моего первого пункта)

  • Еще также и не требуется.

  • Только получить значение MaxQtyDisplay от настройки контекстной как только (незначительный с точки зрения производительности действительно, с настройки загружаются из файла в память по запросу)

  • Переменные именование с односимвольные идентификаторы ничего не оптимизировать

Так, например, можно исправить так:

Private Function CalculateQtyDisplay(ByVal x As Double, ByVal y As Double) As Double
Dim result = 0.0
Dim desiredQuantity As Double = x - y
Dim maxQuantity = My.Settings.MaxQtyDisplay
If (desiredQuantity > 0) Then
If (desiredQuantity <= maxQuantity) Then
result = maxQuantity
Else
result = desiredQuantity
End If
End If
Return result
End Function

Каких-либо других изменений в этот код просто будет эстетической и льготные самом деле, насколько я вижу. Например, вы могли бы покончить с поддержание результата, это противоречит тому, что я рекомендую в другой ответ, но он явно сводится к контексту):

Dim desiredQuantity As Double = x - y
Dim maxQuantity = My.Settings.MaxQtyDisplay
If (desiredQuantity > 0) Then
If (desiredQuantity <= maxQuantity) Then
Return maxQuantity
End If
Return desiredQuantity
End If
Return 0

Модификация, которая приходит в голову, что может отрицательно сказаться на производительности, если что-то может, заключается в использовании функции IIF функция доступна VB.NET (оба принимает и FalsePart этого вызова оцениваются, хотя я сильно сомневаюсь, что вы когда-либо заметной деградации с помощью этого метода в любом случае, даже если вы использовали такой способ):

Dim quantity As Double = x - y
Dim maxQtyDisplay = 1800 'My.Settings.MaxQtyDisplay
If (quantity > 0) Then
Return IIf(quantity <= maxQtyDisplay, quantity, maxQtyDisplay)
End If
Return 0

5
ответ дан 25 апреля 2011 в 06:04 Источник Поделиться