假设你有一个非常时间敏感的长方法,大约有200行代码。将一些代码提取到单独的方法中是否可能会减慢执行速度?
假设你有一个非常时间敏感的长方法,大约有200行代码。将一些代码提取到单独的方法中是否可能会减慢执行速度?
我不这么认为。
是的,一些调用可能会添加一些堆栈帧,但这并不需要太多时间,而且根据您的编译器,它甚至可以通过优化代码以使一个方法版本与许多方法的版本之间基本上没有区别。
通过在一个方法中实现所有内容而导致的可读性和可重用性的丧失绝对不值得(如果有的话)性能的提高。
重要的是,被分解出来的方法必须声明为私有或最终。JVM中的即时编译器将会内联所有内容,这意味着将执行一个单一的大方法作为结果。
然而,在修改代码时,始终要对其进行基准测试。