【发布时间】:2015-07-14 03:29:30
【问题描述】:
我确实搜索过,但没有找到使用 MPICH 或矢量化之类的东西。在fortran中,我会使用MPICH来分解代码以使其瘫痪。
这是在配备 Metal 的 iPad 上运行。
我有一个包含数十万个元素的一维字符串数组,其中很多是重复的。我想找到重复的索引。
到目前为止,我正在使用简单的循环,但它很慢,所以我正在寻找一种方法来矢量化它或尽可能分而治之?或者也许有办法在 Metal 中使用管道?
class func filterDatabyString(dataString:[String],filterString:String) -> [Int]
{
var arrayIndex:[Int] = []
var i:Int = 0
for (i = 0; i < dataString.count; i++) {
if dataString[i] == filterString
{
arrayIndex.append(i)
}
}
return (arrayIndex)
}
【问题讨论】:
-
那么为什么要查找重复项的索引?另外,不是所有的重复项都一样吗?那么为什么需要将它们全部放入数组中呢?
-
把它们放在散列中。如果存在,则为重复项。
-
你对我的问题投了反对票吗?不,还有其他数组有依赖关系,所以我需要索引。
-
放入散列似乎会增加更多开销。当我已经有数组时,为什么要转换为/从哈希?我还需要索引,哈希是无序的。
-
一般你使用Hash来获得O(1)搜索。查看您当前的代码,您应该得到整体代码的 O(n^2) 而不是 O(n),再多的并行化也无助于克服这一点。
标签: ios arrays swift search vectorization