如何创建一个大循环,如从0到Long的范围



下面给出的代码需要花费大量时间来执行代码正确答案

for(long i=0;i<9223372036854775807;i++){
//code
}

有人能告诉我这个版本的任何替代方法或更正吗?

您可以做的一个更改是使用常量Long.MAX_VALUE。

但不要指望这会改变任何事情。这个循环仍然需要所有的时间来迭代这个范围。

换句话说:你如何表达"我想迭代2到63减1的幂"的次数根本不会影响这样做所需的时间。

剪切运行时的唯一方法是对范围进行切片,并使多个较小的循环并行进行。但当然:如果没有关于循环体的任何细节,就不可能确定并行性在这里是否适用。

当然,真正的问题是你打算通过迭代代码数百万、数十亿年来解决的实际问题。

从这个答案https://stackoverflow.com/a/15505663/7806805既然你的问题是

下面给出的代码需要花费大量时间来执行代码正确答案

根据该消息来源,如果您每纳秒执行一次函数,那么遇到这种情况仍然需要292年以上的时间

所以它很自然地需要时间

我建议使用Long.MAX_VALUE作为循环绑定:

for(long i=0L;i<Long.MAX_VALUE;i++){
//code
}

最新更新