小编iVi*_*ity的帖子

使并行 IntStream 更高效/更快?

我已经寻找这个答案一段时间了,但找不到任何东西。

我正在尝试创建一个 IntStream ,它可以非常快速地找到素数(很多很多素数,非常快——几秒钟内数百万个)。

我目前正在使用这个并行流:

import java.util.stream.*;
import java.math.BigInteger;

public class Primes {
    public static IntStream stream() {
        return IntStream.iterate( 3, i -> i + 2 ).parallel()
                .filter( i -> i % 3 != 0 ).mapToObj( BigInteger::valueOf )
                .filter( i -> i.isProbablePrime( 1 ) == true )
                .flatMapToInt( i -> IntStream.of( i.intValue() ) );
    }
}
Run Code Online (Sandbox Code Playgroud)

但生成数字需要很长时间。(生成 1,000,000 个素数需要 7546 毫秒)。

有没有任何明显的方法可以使其更高效/更快?

java parallel-processing primes java-stream

2
推荐指数
1
解决办法
1057
查看次数

标签 统计

java ×1

java-stream ×1

parallel-processing ×1

primes ×1