在vb.net中更快的字符串比较

时间:2011-03-10 04:33:28

标签: vb.net performance string

我有这个条件:

 If (cmbStatusSearch.SelectedValue <> "-1") Then

如何在性能方面做得更好?我读String.CompareOrdinal比较字符串更快。我应该使用:

 If (String.CompareOrdinal(cmbStatusSearch.SelectedValue,"-1" <>0) Then

或者,如果性能更快,还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

我认为你过分关注错误类型的性能问题并过早地优化了一小段代码。

第一个例子比第二个例子更具可读性。如果它符合您的目的,那么继续前进并对其满意。您的性能瓶颈不会出现在该声明中。如果您觉得程序中的某些操作很慢,那么使用分析器(例如ANTS Performance Profiler(或类似))来发现瓶颈的位置。在那之前,猜测性能问题是徒劳的。

为了正确看待这一点,请考虑如果他们如此担心你的问题所呈现的水平,那么没有人会使用LINQ。相反,他们会坚持传统的代码和循环,这已知更快。但是,为了便于阅读和表达,LINQ是常用和可接受的。

虽然String.CompareOrdinal可能更有效,但我建议您在需要从其预期目的中受益时使用它,即使用序数排序规则执行区分大小写的比较。否则,对于您发布的示例,直接比较很好并且更具可读性。

答案 1 :(得分:0)

让我们考虑一下:

任何字符串相等性检查都可以通过string.CompareOrdinal来实现。 字符串比较检查不能通过相等检查来实现。

因此,如果CompareOrdinal更快,为什么他们不就此实施Equals呢?实际上,它的速度较慢(确切的数字取决于框架),但这并不奇怪,因为它的工作量更多。