加速迭代器中每个元素的散列
Speed up hashing of each element in an Iterator
我有一个 Iterator[String]
类型的迭代器,大小为 2501235 个元素。我还有一个包含 100 个哈希函数的列表,我想用所有哈希函数对 Iterator 中的每个元素进行哈希处理。下面的代码是我目前所拥有的,但是 运行 需要很长时间,有没有办法修复代码以使其 运行 更快?
def hashing_item(value: (Int,List[List[Int]],List[Hash_Function]), item: String): (Int,List[List[Int]],List[Hash_Function])= {
val (bits,res,elems) = (value._1,value._2,value._3)
val hashed_input = res ++ List(elems.map(func => func.apply(item) % bits))
(bits,hashed_input,elems)
}
val tempList: List[List[Int]] = List()
val hashing_elems = s.foldLeft(bits,tempList,hashes)(hashing_item)
如果我对代码的理解正确,你只需要 flatMap
而不是 foldLeft
iterator.flatMap { item =>
hashes.iterator.map { func =>
func.apply(item) % bits
}
}
这将 return 另一个 Iterator
在需要之前不会计算任何东西。
我有一个 Iterator[String]
类型的迭代器,大小为 2501235 个元素。我还有一个包含 100 个哈希函数的列表,我想用所有哈希函数对 Iterator 中的每个元素进行哈希处理。下面的代码是我目前所拥有的,但是 运行 需要很长时间,有没有办法修复代码以使其 运行 更快?
def hashing_item(value: (Int,List[List[Int]],List[Hash_Function]), item: String): (Int,List[List[Int]],List[Hash_Function])= {
val (bits,res,elems) = (value._1,value._2,value._3)
val hashed_input = res ++ List(elems.map(func => func.apply(item) % bits))
(bits,hashed_input,elems)
}
val tempList: List[List[Int]] = List()
val hashing_elems = s.foldLeft(bits,tempList,hashes)(hashing_item)
如果我对代码的理解正确,你只需要 flatMap
而不是 foldLeft
iterator.flatMap { item =>
hashes.iterator.map { func =>
func.apply(item) % bits
}
}
这将 return 另一个 Iterator
在需要之前不会计算任何东西。