ファイルに含まれているサンプルデータを解析するプログラムを作成しました。現在、私のプログラムはサンプルをリストに読み込み、サンプルリスト([Float]
)でさらに分析/処理を実行します。サンプルをファイルから配列に読み込む
私はパフォーマンスに満足していません。パフォーマンス向上のためにリストの代わりに配列を使用することを考えています。私は実装を並列化することも検討しており、Data.Array.Repa
は有望に見えます。
現在、ファイルからの読み込みは、このような何かを行く:
- 私は
hGet
を使用して、ByteString
にすべてのサンプルをお読みください。 - 私は、各サンプルは3バイトで表現されて知っているので、私はグループ
- 3の
ByteString
秒のリストにByteString
私はFloat
のリストを取得するにはByteString
秒のリストに私のtoFloat
機能をマッピングします。
この結果、[Float]
という結果が得られ、目的の情報が得られます。
この手順のどの段階でアレイを使用するのかと思います。最初にlistArray
関数を使用して[Float]
を浮動小数点数の配列に変換することを考えました。私は分かりませんが、これは最も効率的な方法ではないようです。
Data.Array.Repa.fromFunction
を使用して、手順2の直後に配列を作成し、中間をスキップできますか?関数については、(map toFloat bsList)
のようなものを使用できますか?ここで、bsList
は、グループ化後のByteString
のリストです。
または、サンプルを直接アレイに読み込む方法はありますか?
プログラムが小さい場合は、投稿することもできます。私たちの答えははるかに具体的(そして検証可能)になります。 – Alec
@Alec申し訳ありませんが、コードを共有することはできません。 –