条件限制会影响表现多少?例如,代码A的执行速度是否比代码B快,因为它只检查一次布尔值? (data
在此示例中为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
旗帜,有些则不关心。有没有人有这样或那样的统计证据?
答案 0 :(得分:1)
如果经常运行给定的方法,则需要考虑if语句引起的性能损失。如果您想了解有关此效果的详细信息,建议您阅读有关conditional branching.
的帖子话虽如此,我会说通过改变第一行代码来获得非常微不足道的性能提升:
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)
}
但是,我必须说,这纯粹是为了提高可读性而不是为了表现。
在一天结束时,如果你担心它;测试它!
答案 1 :(得分:0)
我认为这个问题没有明确的答案。这取决于行数等,唯一可以回答它的是你。要测试它,您只需使用Stopwatch类。
我认为不会有太多差异,所以我会说A,因为它更具可读性/可编辑性。