多くの中間クラス経由でオブジェクトを取得するのは、中間クラスをグローバル変数に割り当てるよりも時間がかかる傾向があります。 たとえば、以下のステートメントは同じ結果になります。
x = obj.Kinematics.Global.Parameters( "posx" ).Value y = obj.Kinematics.Global.Parameters( "posy" ).Value z = obj.Kinematics.Global.Parameters( "posz" ).Value set gk = obj.Kinematics.Global x = gk.Parameters( "posx" ).Value y = gk.Parameters( "posy" ).Value z = gk.Parameters( "posz" ).Value
これらのコードはどちらも同じオブジェクトの x 位置にアクセスしていますが、最初のバージョンは同じ関数を 3 回呼び出しているのに対して、2 つ目のバージョンは最初のオブジェクトを再使用しています。 処理手順を少し見てみましょう。オブジェクトの x、y、z 位置に到達するために、以下のプロパティ コールが実行されます。
Kinematics (X3DObject)プロパティが Kinematics オブジェクトを返します。
Global (Kinematics) * プロパティが KinematicState オブジェクトを返します。
KinematicState オブジェクトから、Parameters (ProjectItem) * プロパティが ParameterCollection オブジェクトを返します。
Item (ParameterCollection) * プロパティが Parameter オブジェクトを返します。
Value (Parameter) * プロパティが位置を返します。
KinematicState オブジェクトへのポインタを使用すると、メモリ内で作成されたオブジェクトを参照するだけですむため、スクリプト内の 4 つのプロパティ コールを省略できます。 短いスクリプトでは、どれくらの時間を節約できたかがよくわかりませんが、多くの反復コールを置き換えると、パフォーマンスの向上を実感できます。