我有这个条件:
If (cmbStatusSearch.SelectedValue <> "-1") Then
如何在性能方面做得更好?我读String.CompareOrdinal比较字符串更快。我应该使用:
If (String.CompareOrdinal(cmbStatusSearch.SelectedValue,"-1" <>0) Then
或者,如果性能更快,还有其他方法吗?
答案 0 :(得分:3)
我认为你过分关注错误类型的性能问题并过早地优化了一小段代码。
第一个例子比第二个例子更具可读性。如果它符合您的目的,那么继续前进并对其满意。您的性能瓶颈不会出现在该声明中。如果您觉得程序中的某些操作很慢,那么使用分析器(例如ANTS Performance Profiler(或类似))来发现瓶颈的位置。在那之前,猜测性能问题是徒劳的。
为了正确看待这一点,请考虑如果他们如此担心你的问题所呈现的水平,那么没有人会使用LINQ。相反,他们会坚持传统的代码和循环,这已知更快。但是,为了便于阅读和表达,LINQ是常用和可接受的。
虽然String.CompareOrdinal
可能更有效,但我建议您在需要从其预期目的中受益时使用它,即使用序数排序规则执行区分大小写的比较。否则,对于您发布的示例,直接比较很好并且更具可读性。
答案 1 :(得分:0)
让我们考虑一下:
任何字符串相等性检查都可以通过string.CompareOrdinal
来实现。
字符串比较检查不能通过相等检查来实现。
因此,如果CompareOrdinal
更快,为什么他们不就此实施Equals
呢?实际上,它的速度较慢(确切的数字取决于框架),但这并不奇怪,因为它的工作量更多。