[英]Can I improve debugging by assigning value to variable before returning without sacrificing performance?
在以下类型的方法中添加变量分配(以增强调试过程的目的)是否会在大约1k调用后使执行速度降低一秒(1k ms)以上?
我是否正确假设变量将超出范围并在方法完成执行时被垃圾回收?
重构此方法:
public String concatenateOneOrTwo(String input, boolean one){
if(one){
return concatenate(input, "one");
}else{
return concatenate(input, "two");
}
}
对于这样的事情:
public String concatenateOneOrTwo(String input, boolean one){
String returnValue = "";
if(one){
returnValue = concatenate(input, "one");
}else{
returnValue = concatenate(input, "two");
}
return returnValue;
}
这个较小的重构可以改善调试过程。 这将使开发人员可以轻松地检查返回值并增强代码的可维护性。
其他资源
public String concatenate(String one, String two){
return one + two;
}
我认为可以公平地说,与该变量声明和赋值相关的任何性能成本都可以忽略不计。
当您调用连接方法时,返回的值是对实际字符串数据的引用。 字符串数据本身保存在堆中。 在您列出的两种情况下都会发生这种情况。
变量returnValue
只是对字符串的引用; 它不是字符串的副本,因此它的内存占用非常低。 此外, returnVariable
存储在堆栈中,因此甚至不需要进行垃圾回收。 一旦超出范围,它就会从堆栈中弹出。
无论哪种方式,由于字符串串联(以及字符串在堆上的存储),大部分复杂性(时间和空间方面)都会发生。 因此,底线可能不是您应该担心的成本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.