因此,对于家庭作业,我应该使用应该导致 pi 的函数的简单集成来使用几种线程机制。该实现应该处理超过 5000 亿的间隔。我当前的实现在 2GB 的堆大小上处理最多约 5000 万个 for 循环。现在我的问题是为什么实现使用这么多内存?(我认为这是因为必须提前确定范围,这是真的吗?)我如何提高内存使用率?是否可以使用并行集合,或者我是否被迫使用线程池来处理这样的事情?
注意:我将通过以下实现获得充分的信任。这是为了我的求知欲和我在 scala 中变得更加流利的梦想。
import scala.Math
object Pi {
def calculate_pi(interval: Int): Double = {
val start: Long = System.currentTimeMillis;
var duration: Long = 0
var x: Double = 2.0/interval
var y: Double = 0.0
var mypi: Double = 0.0
(x until 1.0 by 1.0/interval).par.foreach(i => {
y = 4.0/(1.0+x*x)
mypi += (1.0/interval)*y
})
duration = (System.currentTimeMillis - start)
println("scala calculate_pi\t" + interval + "\t" + duration + "ms\t" + mypi)
return mypi
}
object Main extends App {
println("Please input the interval for the calculation")
if(args.length < 1) { sys.exit }
val interval = args(0).toInt
Pi.calculate_pi_seq(interval)
Pi.calculate_pi(interval)
}