当然,这在Java(到目前为止)中是不可能的语句,但是理想情况下,我希望实现它,因为它是许多迭代的核心。例如,第一次创建它时,它被称为650,000+次ArrayList。不幸的是,现实是我的实际代码没有set内部else循环。因此,它将同时通过add和,set同时浪费命令和时间。
ArrayList
set
else
add
之后,我还将它放在另一个循环中,在该循环中,由于已创建数据,它仅执行集合,并且在许多其他情况中都被嵌套,因此这是一个漫长的过程。
ArrayList<Integer> dataColLinker = new java.util.ArrayList<Integer>(); ... ... public void setLinkerAt( int value, int rowIndex) { ... while(rowIndex >= dataColLinker.size()) { dataColLinker.add(value); } else { dataColLinker.set(rowIndex, value); }
有什么想法或理论吗?我不确定if语句和ArrayList命令等方面的Java速度
if
我想念什么吗?
这不是假想的代码
while(rowIndex >= dataColLinker.size()) { dataColLinker.add(value); } else { dataColLinker.set(rowIndex, value); }
就是这个意思吗?
while(rowIndex >= dataColLinker.size()) { dataColLinker.add(value); } dataColLinker.set(rowIndex, value);
或这个?
if (rowIndex >= dataColLinker.size()) { do { dataColLinker.add(value); } while(rowIndex >= dataColLinker.size()); } else { dataColLinker.set(rowIndex, value); }
(后者更有意义…我猜)。无论哪种方式,很明显,您都可以重写循环,以使“其他测试”不会在循环内重复……就像我刚才所做的那样。
FWIW,这很可能是过早优化的情况。也就是说,您可能在浪费时间来优化不需要进行优化的代码:
众所周知,JIT编译器的优化器可能已经移动了代码,因此“其他”部分不再处于循环中。
即使没有,您尝试优化的特定事物也不是一个重大的瓶颈……即使它可能执行了60万次。
我的建议是暂时忘记此问题。使程序正常运行。工作时,请确定其运行速度是否足够快。如果没有,则对其进行概要分析,并使用概要分析器输出来确定值得花时间优化的位置。