IntelのIntrinsic関数をOpenPOWERやRISC-Vにポートするのに2つの関数が同じ入力なら同じ結果を返すことを保障するテストフレームワークが必要であることを以前までに論じてきた。
そこで、Intel側でIntrinsic関数に入力した入力値と、その出力の対をファイル保存して、OpenPOWERまたは、RISC-Vにポートした方へ移動し、同じテストを行って出力が同じであることを保障する作業が必要になる。
ここで必要なのは入力データと出力のデータのファイル保存の方法である。
ファイル保存の方法には、JSONやXMLなどのテキストフォーマットにして保存する方法と、構造体からバイナリ保存する方法がある。
それぞれのメリットとデメリットを記述していこう。
JSONやXMLでデータを保存する場合のメリット
- フォーマットに柔軟性がある
- フォーマットが総合運用できる可能性
- データの長期保存と整理に向いている
JSONやXMLでデータを保存する場合のデメリット
- テキスト化とバイナリ化のルーチンを記述する必要がある
- データ量が増える
構造体でバイナリ保存する場合のメリット
- 保存する方法が簡単
- テキスト化とバイナリ化のルーチンを記述する必要がない
- データ量が最小
構造体でバイナリ保存する場合のデメリット
- フォーマットが相互運用できない
- 脆弱性を作り込む可能性
- 長期保存して整理することは困難
基本的に副作用のあるIntrinsic関数をテストするのでない限り、脆弱性は作り込まないかもしれないがわからない。基本的に信用できない人から来たテストデータなどは使うべきではない。
また、テストデータファイルなどは長期保存されるものではないので、フォーマットの相互運用などは考えなくて良いかもしれない。
テストデータは基本的に一回きりの使用であるので構造体によるバイナリ保存で良いかもしれない。
JSONやXMLファイルを作るためのテキスト化はかなり大規模になると思われるので、構造体によるバイナリ保存が現実的だろう。