IronPython 2.6.1とclr.CompileModules関数を使用して大きなスクリプトをアセンブリにコンパイルするための実験を行っています。テストでは、コールドスタートのパフォーマンスが向上していますが、場合によっては、コードを表す大きな文字列を実行するよりも実際にコンパイルされたモジュールのインポートが遅くなることがあります。私は新しいScriptSCopeバック輸入は、他のScriptScopesで行われたDLRキャッシュを行い得るにもかかわらず、IronPythonのコードをコンパイルした場合のインポートパフォーマンス
scope.Engine.Execute(string.Format("from {0} import {0}", theModule), scope);
またはImportModule
機能のようなものを使用している場合
私の質問は、ありますか?したがって、モジュール1とモジュール10が同じタイプをインポートする場合、パフォーマンスヒットは1回だけです。
clr.CompileModules
をscope.Compile()
よりも優先して使用していますか?私が理解しているのは、オンザフライコンパイルは、余分なアセンブリを管理する必要がなく、コンパイルコストを一度しか支払う必要がない場合に便利です。
ありがとう、私はアプリケーション上でdotTraceを実行していて、コンパイルされたIronPythonコードへの切り替えは間違いなくコールドスタートのパフォーマンスのように見えます。しかし、私はまだImportModuleで長い時間を費やしています。私は29個のモジュールを含むアセンブリを1つ持っており、同じスコープ内で "foo import barから"実行しています。そのクラスをC#で使用するために抽出しています。これらのモジュールのインポートの依存関係を減らすことは、モジュール自体のインポート時間と同じでしょうか? –