这是我正在询问的一段代码

        for (int i = 0; i < this.options.size(); i++) {
            RadioButton butt = this.options.get(i);
            //do something with butt
        }


如果将其更改为以下内容,我将获得巨大的性能改进:

        RadioButton butt;
        for (int i = 0; i < this.options.size(); i++) {
            butt = this.options.get(i);
            //do something with butt
        }


编辑:如果此代码每秒执行30-50次,而options大约为20,该怎么办?

最佳答案

对于所有现实的,可测量的情况,两种性能之间绝对没有区别。实际上,我非常确定(诚然,我不确定),它们会导致分配和引用创建的数量完全相同。对于JVM创建N个引用持有者而言,这是愚蠢的。它将简单地重用第一次迭代中创建的那个,在下一次分配中简单地为其提供引用。这意味着在两种情况下都只使用一个参考持有人(假设这是事实)。

09-16 14:33