|
TDMSファイル形式で長期間保存するプログラムを実行すると、TDMSファイルとインデックスファイルがGB単位と非常に大きくなってしまいます。これは、ファイルへ一度に1サンプル書き込むときのみ発生する問題のようです。ファイルサイズを小さくする方法はありますか?
TDMS ファイルに書き込む際、データと共にTDMSファイルのヘッダー情報がTDMSインデックスファイルに保存されます。つまり、一度に1ポイントずつのデータをTDMSファイルに書き込むと、ヘッダー情報が毎データポイントごとに作成されます。
この影響を最小限に抑えるために、一度に複数データポイントをTDMSファイルへ書き込む方法、もしくはTDMS関数の一つを使用する方法をお薦めしています。
「TDMSを最適化(TDMS Defragment)」VIは、指定したTDMSファイルの乱雑なデータをクリーンアップします。 「TDMSを最適化(TDMS Defragment)」VIをファイルサイズの大きなTDMSファイルに適用すると時間はかかりますが、その後TDMSの読み取り速度が向上します。
もう一つの方法として、TDMS書き込みの前にあらかじめデータをバッファに蓄積し、一括して書き込みを行う方法があります。 1ポイントずつデータを書き込むプログラムでもバッファサイズを設定することで一括して書き込みを行いますので、TDMS ファイルを作成する回数を減らすことができヘッダ情報を減らすことができます。 これは、書き込み速度向上にもつながります。
図2のように、TDMSファイルへ書き込むすべてのチャンネルに対して望ましい値をNI_MinimumBufferSizeに設定する必要があります。
メモ: TDMSファイル書き込みを行うほとんどのアプリケーションにおいて、手動で構成する必要はありません。長時間同じファイルへ書き込む際のヘッダサイズおよびインデックスファイルサイズは、データサイズに比べて重要ではありません。読み取り時間および解析時間の削減を目的とする場合、集録する際に不要なデータを含まず、出来る限りデータサイズを小さくすることをお薦めします。
Developer Zoneチュートリアル: TDMSファイル形式の内部構造
Developer Zoneチュートリアル: Introduction to LabVIEW TDM Streaming VIs
TDMS - Write data (time domain).vi
|