4

TdwsUnitに関数を登録すると、dwsMathComplexFunctions.pasユニットに登録されているような通常の魔法の関数と同じパフォーマンスが得られますか?

4

1 に答える 1

2

通常はありません。TdwsUnitの関数とメソッドのOnEvalイベントは、完全に快適で安全な処理を受けるためです。

  • 呼び出しパラメーターが評価され、スタックにプッシュされます
  • TProgramInfo / IInfoコンテキストにアクセスできるようになっているため、名前で変数に快適にアクセスでき、スクリプト内の他のすべてを快適に呼び出すことができます。
  • 実行は例外フレームによって保護されています

対照的に、魔法の関数はそれを取得しません。パラメータの式のリストを取得するだけで、それだけです。スタックコンテキストがなく、他のものに簡単にアクセスできないため、パラメータを評価してすべてを処理するのはあなた次第です。そのため、高速で実行する必要のある単純なタスクに適しています。

OnEvalに加えて、TdwsUnitの一部の関数がOnFastEvalイベントを取得するようになったことに注意してください。これは、魔法の関数を宣言する別の方法です。

于 2013-03-27T07:35:34.660 に答える