なぜ単一要素書き込みでTDMSファイルを作成するとサイズが大きくなってしまうのですか?



使用ソフトウェア:
使用ソフトウェア・バージョン: 2015
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:

TDMSファイル形式で長期間保存するプログラムを実行すると、TDMSファイルとインデックスファイルがGB単位と非常に大きくなってしまいます。これは、ファイルへ一度に1サンプル書き込むときのみ発生する問題のようです。ファイルサイズを小さくする方法はありますか?



解決策:

TDMS ファイルに書き込む際、データと共にTDMSファイルのヘッダー情報がTDMSインデックスファイルに保存されます。つまり、一度に1ポイントずつのデータをTDMSファイルに書き込むと、ヘッダー情報が毎データポイントごとに作成されます。

この影響を最小限に抑えるために、一度に複数データポイントをTDMSファイルへ書き込む方法、もしくはTDMS関数の一つを使用する方法をお薦めしています。

「TDMSを最適化(TDMS Defragment)」VIは、指定したTDMSファイルの乱雑なデータをクリーンアップします。 「TDMSを最適化(TDMS Defragment)」VIをファイルサイズの大きなTDMSファイルに適用すると時間はかかりますが、その後TDMSの読み取り速度が向上します。

TDMSを最適化(TDMS Defragment).vi
図1. TDMSを最適化(TDMS Defragment).vi

もう一つの方法として、TDMS書き込みの前にあらかじめデータをバッファに蓄積し、一括して書き込みを行う方法があります。 1ポイントずつデータを書き込むプログラムでもバッファサイズを設定することで一括して書き込みを行いますので、TDMS ファイルを作成する回数を減らすことができヘッダ情報を減らすことができます。 これは、書き込み速度向上にもつながります。

図2のように、TDMSファイルへ書き込むすべてのチャンネルに対して望ましい値をNI_MinimumBufferSizeに設定する必要があります。


図2. 「TDMSプロパティを設定(TDMS Set Properties)」VIの設定例

メモ: TDMSファイル書き込みを行うほとんどのアプリケーションにおいて、手動で構成する必要はありません。長時間同じファイルへ書き込む際のヘッダサイズおよびインデックスファイルサイズは、データサイズに比べて重要ではありません。読み取り時間および解析時間の削減を目的とする場合、集録する際に不要なデータを含まず、出来る限りデータサイズを小さくすることをお薦めします。



関連リンク:

Developer Zoneチュートリアル: TDMSファイル形式の内部構造
Developer Zoneチュートリアル: Introduction to LabVIEW TDM Streaming VIs



添付:

TDMS - Write data (time domain).vi






報告日時: 05/12/2008
最終更新日: 10/03/2016
ドキュメントID: 4LBG3ANE