如何高效地将一万亿个CPU相加?

时间:2019-02-12 21:01:05

标签: algorithm performance optimization data-structures

假设每个数字的大小都接近max int,但略有不同(允许相同的数字)

  • 例如2,147,483,646
  • 例如2,945,283,647
  • 例如2,643,483,500
  • 等...

我确信在这种情况下使用循环会失败,仅仅是因为程序会因超时错误而中止。

1 个答案:

答案 0 :(得分:1)

要增加一万亿个数字,就不可能进行一万亿次操作,这需要一段时间。由于我们谈论的是4 TB,因此我们最多只能谈论的是加载到SSD中的数字,而CPU时间将比从SSD中读取一万亿个数字所需的时间小得多。

只要确保数据访问是并行的,并行执行此操作就很容易。有大量的CPU从一个SSD读取数万亿个数字并不能加快速度。

总和不适合64位数字,但是如果每个数字都在maxint的2 ^ 24范围内,则可以将maxint与每个数字之间的差相加,这样就可以一个64位无符号整数。