2016-10-18 9 views
0

最も効率的な手法とは何ですか?なぜですか?加算演算の場合はベクトル化して並列化しますか?

min_dist = 999999999999999999999999999999999999999999 
    for i in range(len(self.data)): 
     data = self.data[i] 
     dist = MySuperLongFunction(data) 
     if dist < min_dist: 
      min_dist = dist 
    return min_dist 

または

vdist = [0]*len(self.data) 
    for i in range(len(self.data)): 
     data = self.data[i] 
     dist = MySuperLongFunction(data) 
     vdist[i] = dist 
return min(vdist) 

私は分(vdist)を行うために、計算を追加することを知っているが、私は計算することができるようにするためには、前の反復の依存していないため、2番目の人は簡単verry並列化することができますMySuperLongFunction(data)で8回。だから最も効果的なのは何ですか?

答えて

1

self.dataの各入力データの関数値を生成する必要があるため、DARRAY = [MySuperLongFunction(x) for x in self.data]は何であっても計算する必要があります。 すでに指摘したように、コンピューティングDARRAYを並列化することができ、したがって、我々は、私はそれがだと言うでしょう、だから、

、この場合にはmin値を返すに残っているmin([MySuperLongFunction(x) for x in self.data])

関連する問題