在Clojure中将两个整数数组相加的最快方法是什么?

约翰·劳伦斯·阿斯普登

这似乎很慢:

(time (doall (map + (range 1000000) (range 1000000))))
"Elapsed time: 13951.664454 msecs"

如何做得更快?

噪音史密斯

对于初学者,范围不构成数组,而是构成惰性序列。

添加两个数字集合的最快方法可能是先将它们放在数组中,然后进行迭代循环而不是映射。

user> (time (let [a (int-array (range 1000000))
                  b (int-array (range 1000000))]
              (dotimes [i 1000000]
              (aset a i (+ (aget b i) (aget a i))))
              a))
"Elapsed time: 771.100395 msecs"
#<int[] [I@4233eba0>
user> 

请注意,这仍然具有从两个范围调用创建和实现惰性序列的开销,在实际性能中,在进行求和步骤之前,您可能已经构建了该数据。

除非这是代码中的性能瓶颈,否则以这种方式执行操作将意味着您首先不应使用clojure。使用clojure的优点是您可以获得高级的不可变数据结构,从而导致引用透明和可并行化的代码。一旦使用了数组之类的原始jvm类型,就失去了这些优势(以换取更好的性能)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个二进制数相加(整数数组)

来自分类Dev

用两个整数键存储信息的最快方法是什么?

来自分类Dev

比较两个整数数组并找到第一个到最后一个差异的最佳方法是什么?

来自分类Dev

将两个二维 numpy 数组相乘的最快方法是什么?

来自分类Dev

计数数组中元素的最快方法是什么?

来自分类Dev

是什么使这两个数组相加不同?

来自分类Dev

使用重载将两个矩阵相加的最佳方法是什么?

来自分类Dev

比较两个整数数组并返回下标(C)

来自分类Dev

numpy:在两个整数数组上平均求和

来自分类Dev

比较两个整数数组并返回下标(C)

来自分类Dev

比较两个整数数组的相似值

来自分类Dev

检查两个java对象的Deep Equal的最快,最有效的方法是什么?

来自分类Dev

在两个表中插入行的最快方法是什么

来自分类Dev

在AWS的linux中的两个卷之间复制文件(db)的最快方法是什么?

来自分类Dev

在C中复制两个相邻字节的最快方法是什么?

来自分类Dev

在两个硬盘之间传输数据的最快方法是什么?

来自分类Dev

在C ++中从两个从属向量中进行随机选择的最快方法是什么?

来自分类Dev

在两个活动之间传递图像的最快方法是什么?

来自分类Dev

在 Haskell 中将两个函数相加

来自分类Dev

在vhdl中重置整数数组的最佳方法是什么?

来自分类Dev

从两个元素中的整数数组中找到两个对

来自分类Dev

在Go中将一个数组追加到另一个数组的最快方法是什么?

来自分类Dev

通过两个整数数组对正整数和负整数进行排序

来自分类Dev

将两个整数数组添加到数组数组中,以便创建坐标对

来自分类Dev

通过将两个整数数组的值一对一地求和来合并两个整数数组

来自分类Dev

在 postgresql 中使用 st_contains 在几何上连接两个大型 postgresql 表的最快方法是什么?

来自分类Dev

在Python中将两个类相互链接的正确方法是什么

来自分类Dev

在Go中找到两个整数之间的最小值的正确方法是什么?

来自分类Dev

安排一个整数数组,使两个连续的数字之和不被3整除

Related 相关文章

  1. 1

    两个二进制数相加(整数数组)

  2. 2

    用两个整数键存储信息的最快方法是什么?

  3. 3

    比较两个整数数组并找到第一个到最后一个差异的最佳方法是什么?

  4. 4

    将两个二维 numpy 数组相乘的最快方法是什么?

  5. 5

    计数数组中元素的最快方法是什么?

  6. 6

    是什么使这两个数组相加不同?

  7. 7

    使用重载将两个矩阵相加的最佳方法是什么?

  8. 8

    比较两个整数数组并返回下标(C)

  9. 9

    numpy:在两个整数数组上平均求和

  10. 10

    比较两个整数数组并返回下标(C)

  11. 11

    比较两个整数数组的相似值

  12. 12

    检查两个java对象的Deep Equal的最快,最有效的方法是什么?

  13. 13

    在两个表中插入行的最快方法是什么

  14. 14

    在AWS的linux中的两个卷之间复制文件(db)的最快方法是什么?

  15. 15

    在C中复制两个相邻字节的最快方法是什么?

  16. 16

    在两个硬盘之间传输数据的最快方法是什么?

  17. 17

    在C ++中从两个从属向量中进行随机选择的最快方法是什么?

  18. 18

    在两个活动之间传递图像的最快方法是什么?

  19. 19

    在 Haskell 中将两个函数相加

  20. 20

    在vhdl中重置整数数组的最佳方法是什么?

  21. 21

    从两个元素中的整数数组中找到两个对

  22. 22

    在Go中将一个数组追加到另一个数组的最快方法是什么?

  23. 23

    通过两个整数数组对正整数和负整数进行排序

  24. 24

    将两个整数数组添加到数组数组中,以便创建坐标对

  25. 25

    通过将两个整数数组的值一对一地求和来合并两个整数数组

  26. 26

    在 postgresql 中使用 st_contains 在几何上连接两个大型 postgresql 表的最快方法是什么?

  27. 27

    在Python中将两个类相互链接的正确方法是什么

  28. 28

    在Go中找到两个整数之间的最小值的正确方法是什么?

  29. 29

    安排一个整数数组,使两个连续的数字之和不被3整除

热门标签

归档