我正在对大小为50,000个元素的两个向量执行基于元素的操作,并且有不满意的性能问题(几秒钟)。是否存在明显的性能问题,例如使用不同的数据结构?
(defn boolean-compare
"Sum up 1s if matching 0 otherwise"
[proposal-img data-img]
(sum
(map
#(Math/abs (- (first %) (second %)))
(partition 2 (interleave proposal-img data-img)))))
试试看:
(apply + (map bit-xor proposal-img data-img)))
一些注意事项:
map
将一个函数ping到多个集合,使用每个集合中的一个元素作为函数的参数-为此不需要interleave
和partition
。异或
将比绝对差分快(def data-img (repeatedly 50000 #(rand-int 2)))
(def proposal-img (repeatedly 50000 #(rand-int 2)))
(def sum (partial apply +))
在预热JVM之后...
(time (boolean-compare proposal-img data-img))
;=> "Elapsed time: 528.731093 msecs"
;=> 24802
(time (apply + (map bit-xor proposal-img data-img)))
;=> "Elapsed time: 22.481255 msecs"
;=> 24802
本文向大家介绍clojure 向量,包括了clojure 向量的使用技巧和注意事项,需要的朋友参考一下 示例 向量用方括号表示: 除了使用文字语法之外,您还可以使用该vector函数来构造向量: 您可以使用vector?谓词测试某物是否为向量: conj 在向量的末尾添加元素: count 以固定时间返回项目数: 您可以使用来获得向量的最后一个元素peek: 您可以使用来获得没有最后一个元素的新向
我一直在和来自Python的朱莉娅玩。我写了一些代码来解决这个难题。我在用蛮力的方法。代码在Python中运行需要一段时间(~30分钟),但在Julia中仍然需要大约3分钟。我确信这有点难看,因为我还在学习这门语言。我查看了优化器页面,在函数中输入了数据类型,并避免了全局变量。 与此相关的三个问题: > 肯定有更好的方法来做函数mymax。我找到了一些关于阿格马克斯的建议,但这给我带来了一个大麻烦
我正在Rust中创建一个无闩锁并发哈希映射。吞吐量曲线看起来就像我预期的那样,最多可达16个线程,此时性能将下降。 吞吐量(MOps/秒)与线程数 我使用了一个带有48个vCPU和200GB RAM的Google云实例。我尝试启用/禁用超线程,但没有明显的效果。 以下是我如何生成线程: 我没有主意了;我的Rust代码对于多线程是否正确?
问题内容: 我最近一直在尝试使用Redis和MongoDB,似乎经常会在MongoDB或Redis中存储 ID 数组。因为我要询问MySQL IN 运算符,所以我会坚持使用Redis 。 我想知道在IN运算符中列出大量(300-3000) id的 性能如何,看起来像这样: 想象一下简单的 产品* 和 类别 表,您通常可以将它们结合在一起以从某个 类别中 获得 产品 。在上面的示例中,您可以看到在R
本文向大家介绍clojure 解构向量,包括了clojure 解构向量的使用技巧和注意事项,需要的朋友参考一下 示例 这是如何解构向量的方法: 然后,例如在一个let块内,您可以非常简洁地从向量中提取值,如下所示:
问题内容: 我们正在为IMAP帐户开发基于Java的邮件客户端,并使用最新的Java邮件api(1.5.6)。我们的客户拥有超过400个文件夹的邮件帐户。用户在文件夹上执行检查邮件,并在每个文件夹上进行迭代并获取新消息,例如, 或获取未读邮件的数量过多,这是因为文件夹数量巨大。(我们必须遍历400个文件夹) 为了提高性能,我们在线程中使用了并行工作连接,并且我们有一个SESSION实例,但是每个线