首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby数组交集性能问题

ruby数组交集性能问题
EN

Stack Overflow用户
提问于 2012-10-05 21:22:09
回答 2查看 1.6K关注 0票数 3

我需要使n数组与数百万个元素(数据库ID)相交。这段代码运行完美,但速度很慢(使用非常大的数组)。我该如何改进它呢?

代码语言:javascript
复制
[[1,2,3,4],[2,4,6,8],[4,5,8]].inject([]){|c,v| c = v if c.size==0; c = c&v if c.size>0; c }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-05 21:25:32

Ruby提供了一个交集运算器。

我建议你试试这个:

代码语言:javascript
复制
> [[1,2,3,4],[2,4,6,8],[4,5,8]].reduce{ |accum, arr| accum & arr }
=> [4] 

编辑:

这段代码可以写得更简洁一些,但它的可读性较差。

代码语言:javascript
复制
[[1,2,3,4],[2,4,6,8],[4,5,8]].reduce(:&)
票数 3
EN

Stack Overflow用户

发布于 2012-10-05 21:26:10

代码语言:javascript
复制
[1,2,3,4] & [2,4,6,8] & [4,5,8] #=> [4]

intersection method使用散列,所以它应该很快。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12747191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档