繁体   English   中英

我可以在不牺牲性能的情况下通过在返回之前为变量赋值来改善调试性能吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM