【发布时间】:2015-04-05 21:50:29
【问题描述】:
在 Visual Basic 中,当尝试在列表中查找最大值和最小值时,使用 math.min/max 是否更有效:
Dim highest As Decimal = Decimal.MinValue
Dim lowest As Decimal = Decimal.MaxValue
For Each item As Decimal In listNumber
highest = Math.Max(highest, item)
lowest = Math.Min(lowest, item)
Next
或对列表进行排序并按索引获取值,如下所示:
listNumber.Sort()
listNumber(0)
listNumber(99)
看起来使用 min/max 是首选方法,但对于包含 100 个十进制值的列表,它们似乎都足够好,一个比另一个更有效,或者这只是 6 对半打的东西?
我试图找到一种在 Visual Studio 2013 Express 中对此进行基准测试的方法,但看起来我必须升级到 Visual Studio Ultimate,我错过了什么吗?
【问题讨论】:
-
“我试图找到一种方法在 Visual Studio 2013 Express 中对此进行基准测试,但看起来我必须升级到 Visual Studio Ultimate,我错过了什么吗?” 你只需要使用
System.Diagnostics.Stopwatch和一个有意义的测试。但我可以告诉你,你正在进行微优化。使用最具可读性和可维护性的代码listNumber.Min()和listNumber.Max()。 -
@TimSchmelter 谢谢,总的来说这真的很有帮助,但在这种情况下,它们似乎都以 1 毫秒运行
-
@apaul34208:编译器可能会为这些方法中的每一个生成类似的输出。您的方法和内置方法之间的任何差异都可以通过更大的样本量来实现。但是,您应该尽可能使用内置方法,因为它们更有可能是此类情况的最佳选择。你不应该尝试微优化,除非你的用例以某种方式证明它是合理的。
标签: vb.net list sorting max min