9

データに基づいてビデオを視覚化するアプリを構築するために、Atom/Electron を使用しています。各ビデオには、各フレームの情報を含む対応する CSV ファイルがあります。動画は約100分なので、ファイル容量もたっぷり!

私が抱えている問題は、ファイルの読み込みと解析に数秒かかることです。ほとんどの場合、これは問題ではありません。しかし、動画の一部のプレイリストを作成する必要があり、動画が変更されるたびに CSV ファイル全体を読み込むことは実行可能なオプションではありません。

ファイル ストリーミング オプションを fast-csv として探していましたが、ファイルの任意の部分の読み取りを開始できませんでした。

編集:FSのドキュメントから。この場合、問題は、ファイル内の必要な位置に対応するバイトをどのように知ることができるかということです。

オプションには、ファイル全体ではなく、ファイルから一定範囲のバイトを読み取るための開始値と終了値を含めることができます。start と end はどちらも包括的で、0 から始まります。

この状況に対するより適切で最もパフォーマンスの高いアプローチは何だと思いますか?

具体的には:

CSV ファイルの任意の部分からストリームの読み取りを開始する方法はありますか?

この問題をより適切に解決できる別の保存方法があると思いますか?

アップデート:

最後に、データをバイナリ形式のファイルに保存することでこれを解決しました。ファイルに含まれる列の数がわかっているので、パフォーマンスに影響を与えることなく、ファイルのセグメントから直接読み取ることができます。

4

2 に答える 2

3

これにはPapaparseを強くお勧めします。これにより、ファイル内のヘッダーに基づいて JSON 形式で処理できる CSV の「行ごと」のストリーミングが可能になります。

解析関数に渡される構成オブジェクト内で、「ステップ」パラメーターを指定できます。これは、ファイルがステップスルーするときに、ファイルの各行に対して実行される関数です。

注: 非常に大きな CSV を処理する場合、パフォーマンスを向上させるためにワーカー スレッドを使用するように構成することもできます。

http://papaparse.com/docs

于 2015-07-23T17:00:39.437 に答える