FileMakerもバージョンが16になり、以前とは比べ物にならないほど多機能になってきました。
しかし、スクリプトの組み方によっては、処理が遅いシステムになってしまいます。
今回は、同じことをするのに違うステップや関数で実装したらどっちが早いか、が気になったのでやってみました。
Loopとフィールド内容の全置換です。
実施環境
MacBook Air (13-inch, Early 2015)
プロセッサ:1.6 GHz Intel Core i5
メモリ:8 GB 1600 MHz DDR3
OS:macOS High Sierra バージョン 10.13.1
FileMaker:FileMaker Advanced Pro 16.0.3.302
検証データ
(1)1万件ちょい(16,000件)のデータ2フィールドを変換
(2)5万件ちょい(56,000件)のデータ2フィールドを変換 → (1)1の3.5倍
(3)10万件ちょい(112,000件)のデータ2フィールドを変換 → (1)の7倍
変換するフィールドは、
・テキストデータ
・数値
の2つです。
仕様するFileMaker スクリプトステップ
以下の2つのスクリプトステップごとにスクリプトを作成します。
・Loop
・フィールド内容の全置換
フィールド内容の全置換を使ったスクリプトは、以下のような感じです。
結果
1万件ちょい(16,000件)のデータ2フィールドを変換の場合
5万件ちょい(56,000件)のデータ2フィールドを変換の場合
10万件ちょい(112,000件)のデータ2フィールドを変換の場合
さすがに10万件ちょいのLoop変換は、待っている間、眠くなりそうでした。。。
表にしてみました。
件数(件) | Loop(分:秒) | 全置換(分:秒) |
---|---|---|
16,000 | 0:30 | 0:02 |
56,000 | 1:50 | 0:06 |
112,000 | 3:39 | 0:12 |
グラフにしてみました。
Loop、スキーの上級者コースを超えた斜度ですね!
基準値を16,000件とすると、Loopは16,000件の3.5倍のデータである56,000件は、処理時間は3.5倍を5秒ほど多くかかっています。
同様に、112,000件は16,000件の7倍ですが、処理時間は7倍を4秒ほど多くかかっています。
バッチ処理をするなら、4,5秒多くかかってもそんなに気になりませんが、オンラインで処理する際は、ものすごくかかることになりますね。
だがしかし、全置換に関しては、単に3.5倍、7倍の時間はかかっていません。
むしろ、少ない時間で処理を終了しています。
FileMakerのバージョンや実行環境にも寄るかと思いますが、今の所、フィールド内容の全置換の方が処理が早い、という結果になっています。
なお、再帰処理でのフィールド変換は、再帰回数に限界数があるようですので、今回の検証からは外しました。
では、楽しいFileMakerライフを!