スポンサーサイト

-- --, --
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PatternCount と Position どっちが早い?

01 17, 2014
テキスト内に任意の文字列が出現しているか否かの判別に利用できる関数。

PatternCount関数Position関数 があります。

対象のテキストを最後まで舐める PatternCount に対し、
1回目の出現の位置で終了する Position の方が早いと考えられています。

実際にはどうなのでしょうか?


多量のレコードに判別をするスクリプトを書く機会があったので
どちらが早いのか試しに検証してみました。

検証方法:

1.対象レコードの特定のテキストフィールドに任意の文字列が含まれているか判定
 PatternCount ( テキスト ; 検索テキスト )
 Position ( テキスト ; 検索テキスト ; 1 ; 1 ) のそれぞれ。
2.結果を変数に設定するスクリプト、フィールドに設定するスクリプトをそれぞれ実行。

テキスト [約20,000文字] から任意の文字列の出現を判定。
500レコードを用意してそれぞれにランダムなテキストフィールドを作成。
テキストに含まれるのは日本語の五十音ひらがなのみ。
最後のレコードの判定までの時間を計測。


1.ローカルのファイルで実行
2.サーバーでホストされたファイルで実行
3.「サーバー上のスクリプトを実行」スクリプトステップを実行


Get ( 現在の時刻 UTC ミリ秒 ) を用いて経過時間をミリ秒まで計測。
それぞれ10回処理を行い、平均値を抽出しています。

FileMaker Pro / FileMaker Go でそれぞれ検証しています。

実行環境:
サーバー
OS: Windows Server 2008 R2 Standard
CPU: 2.13GHz 4コア相当
メモリ: 4GB

クライアント
MacBook Pro Retina
OS: OS X 10.9.1
CPU: 2.7GHz Core i7
メモリ: 16GB

iPad mini Retina
OS: iOS7.0.4
CPU: Apple A7(64ビット) 1.3GHz相当
メモリ: 967MB

こちらが検証結果です。

20140117_001.png

20140117_002.png
スポンサーサイト
Posted in FileMaker

続・新集計フィールド: 一覧 は早いのか?

01 16, 2014
前回の記事の検証をさらに進めてみました。

新たに3つの処理方法を追加して合計6つの処理方法の速度を検証しました。

1.一覧の集計フィールド
2.対象レコードからループで値を取得するスクリプト
3.対象レコードから GetNthRecord で値を取得するスクリプト
4.GetNthRecord を利用した再帰カスタム関数
5.グローバル格納のフィールドへの全置換で値を取得するスクリプト
6.ExecuteSQL関数
※ExecuteSQL関数では検索を含むSQL文を実行しています。

全国郵便番号データ[123,423件]から都道府県フィールドを検索。
"東京・大阪・愛知・宮城・福岡" [21,654件]に対して処理を実行。
リストの作成開始から作成完了までを計測。


1.ローカルのファイルで実行
2.サーバーでホストされたファイルで実行
3.「サーバー上のスクリプトを実行」スクリプトステップを実行


Get ( 現在の時刻 UTC ミリ秒 ) を用いて経過時間をミリ秒まで計測。
それぞれ10回処理を行い、平均値を抽出しています。

FileMaker Pro / FileMaker Go でそれぞれ検証しています。

実行環境:
サーバー
OS: Windows Server 2008 R2 Standard
CPU: 2.13GHz 4コア相当
メモリ: 4GB

クライアント
MacBook Pro Retina
OS: OS X 10.9.1
CPU: 2.7GHz Core i7
メモリ: 16GB

iPad mini Retina
OS: iOS7.0.4
CPU: Apple A7(64ビット) 1.3GHz相当
メモリ: 967MB

こちらが検証結果です。

140116_001.png

140116_002.png

Posted in FileMaker

新集計フィールド: 一覧は早いのか?

01 15, 2014
FileMaker 13 で新しい集計フィールドとして一覧が追加されました。
※1/16 6:54 検索対象について追記

"一覧:
空白以外の値の改行で区切られた一覧をフィールド内に作成します。"


140115_003.png


現在の対象レコードから任意のフィールドの値をすべて取得できる新しい集計フィールドです。

任意のフィールドの値を取得するにはいくつかの方法があります。
それらと比較して"一覧は使えるのか?"検証してみました。

1.対象レコードからループで値を取得する
2.対象レコードから GetNthRecord で値を取得する

こちらの2種類の方法をそれぞれ下記の環境で実行しました。

全国郵便番号データ [123,423件] から都道府県フィールドを検索
"静岡・愛知・岐阜・三重" [16,291件] に対して処理。
検索開始から値の取得完了までを計測。


1.ローカルのファイルで実行
2.サーバーでホストされたファイルで実行
3.FileMaker Server 13 の新機能「サーバー上のスクリプトを実行」


結果はこちら

140115_001.png

140115_002.png

一覧フィールドは従来の方法に比べてかなり高速なことが確認できました。

※FileMaker Server はポンコツマシンで試したためサーバーサイドの速度が遅かった可能性あり。
Posted in FileMaker
プロフィール

まめちゃい

Author:まめちゃい
FileMaker でご飯を食べています。

最新記事
カテゴリ
おすすめ
Powered by amaprop.net
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。