ある変数の値が0ならこの処理、1ならあの処理……のような場合、普通は「もし〜ならば」「〜で条件分岐」のどちらかを使いますが、実はこれをイベント変数で書くことができるのです。
- 式計算(四則演算)
Aとは数値=1
Bとは数値=2
Cとは数値
演算とはハッシュ
演算@`+`は〜_=A+B
演算@`-`は〜_=A-B
演算@`*`は〜_=A*B
演算@`/`は〜_=A/B
演算子とは配列=`+-*/`を文字列分解
777で乱数初期化
開始時間=システム時間
10万回
※1 ハッシュのイベント変数
C=演算@演算子[4の乱数]
※2 ナデシコ(EVAL)する
#C=EVAL(A&演算子[4の乱数]&B)
※3 条件分岐構文
/*
演算子[4の乱数]で条件分岐
`+`ならばC=A+B
`-`ならばC=A-B
`*`ならばC=A*B
`/`ならばC=A/B
# */
「経過時間: {システム時間-開始時間} [msec]」と表示
上のサンプルは、変数AとBに対してひたすら四則演算を行い、その速度を調べるプログラムです。ハッシュのイベント変数を使う場合、ナデシコする場合、条件分岐する場合の3通りを用意していますが、演算子[4の乱数]
は3通りすべてで共通して使われているので、違いは実質上どのように四則演算するかの部分だけということになります。結果、四則演算させるにはハッシュのイベント変数が最も速いと分かります。
これは、条件分岐では演算子の一致不一致の判断に時間がかかるのに対し、ハッシュ変数では演算子をキーとして目的のイベント変数に高速でアクセスできるからです(かなり大雑把な説明ですが)。つまり、速いのはむしろハッシュ変数の方で、それをイベント変数として利用したというわけです。「ナデシコする」が遅いのは当然のことで、与えられた文字列をなでしこのプログラム文として解析してから評価する(=evaluate)わけですから、いくら単純な式でも時間がかかってしまいます。