これは非常に奇妙です
Pythonのnumpyライブラリを使用していくつかの(確かに非常に大きい:それぞれ最大2GB)バイナリファイルを読んでいます。私は使用しています:
thingy = np.fromfile(fileObject, np.int16, 1)
方法。これはネストされたループの真ん中にあります-私はこのループを「チャネル」ごとに4096回実行し、この「チャネル」ループは「レシーバー」ごとに9回、この「レシーバー」ループは4回実行しています(9チャネルあります)受信機ごとに、そのうちの4つがあります!)。これはすべての「ブロック」に適用され、ファイルごとに最大3600個あります。
ご覧のとおり、非常に反復的で、長い時間がかかることはわかっていますが、予想よりもかなり長くかかっていました。「ブロック」あたり平均8.5秒でした。
time.clock()などを使用していくつかのベンチマークを実行したところ、「ブロック」ごとに約1または2サンプル(つまり、4096 * 9 * 4の1または2)を除いて、すべてが正常に実行されていることがわかりました。数秒間「スタック」します。これは、バイナリから単純なint16を返す場合であり、数秒かかるはずの正確なものではありません...なぜそれが固執するのですか?
ベンチマークから、毎回同じ場所に留まっていることがわかりました(ブロック2、レシーバー8、チャネル3、サンプル1085は、記録のためにそのうちの1つでした!)、ほぼ同じ量の間、そこに留まります。各実行の時間。
何か案は?!
ありがとう、
ダンカン