0

条件对性能有多大影响?例如,代码 A 是否会比代码 B 执行得更快,因为它只检查布尔值一次?(在本例中data为 a )DataTable

代码 A:

bool isBusiness = string.IsNullOrEmpty(data["businessName") ? false : true;
if(isBusiness) {
    var name = data["businessName"];
    var id = data["businessId"];
    var phone = data["businessPhone"];
    var address = data["businessAddress"];
}
else {
    var name = data["customerName"];
    var id = data["customerId"];
    var phone = data["customerPhone"];
    var address = data["customerAddress"];
}

代码 B:

bool isBusiness = string.IsNullOrEmpty(data["businessName") ? false : true;
var name = isBusiness ? data["businessName"] : data["customerName"];
var id = isBusiness ? data["businessId"] : data["customerId"];
var phone = isBusiness ? data["businessPhone"] : data["customerPhone"];
var address = isBusiness ? data["businessAddress"] : data["customerAddress"];

这是一个小例子,所以实际差异会很小,但是如果我像这样映射数百行呢?有些人关心isBusiness国旗,有些人不关心。有人有任何统计证据吗?

4

2 回答 2

0

我认为这个问题没有明确的答案。这取决于有多少行等,唯一能回答的人是你。要对其进行测试,您可以简单地使用Stopwatch类。

我认为不会有很多/任何区别,所以我会说 A,因为它更具可读性/可编辑性。

于 2013-10-25T14:59:57.553 回答
0

我同意这里的其他响应者;但是,我想补充一点。

如果经常运行给定方法,则需要考虑 if 语句对性能的影响。如果你想了解更多关于这种影响性能的细节,我建议阅读这篇关于条件分支的文章。

话虽如此,我会说通过更改第一行代码,您可以获得非常微不足道的性能提升:

bool isBusiness = string.IsNullOrEmpty(data["businessName") ? false : true;

对此:

bool isBusiness = !string.IsNullOrEmpty(data["businessName");

不过,在这两个选项中,我更喜欢第一个

这样做的原因是,如果你想提高代码的清晰度,你可以从这里重构它:

bool isBusiness = string.IsNullOrEmpty(data["businessName") ? false : true;
if(isBusiness) {
   var name = data["businessName"];
   var id = data["businessId"];
   var phone = data["businessPhone"];
   var address = data["businessAddress"];
}
else {
   var name = data["customerName"];
   var id = data["customerId"];
   var phone = data["customerPhone"];
   var address = data["customerAddress"]; 
}

对此:

bool isBusiness = !string.IsNullOrEmpty(data["businessName");
if(isBusiness) {
   this.MapBusinessRow(data);
}
else {
   this.MapCustomerRow(data)
}

不过,我必须说,这纯粹是为了可读性,而不是为了性能。

归根结底,如果您担心它;测试它!

于 2013-10-25T18:05:40.447 回答