Skip to Content
新しいバージョン 12 を公開しました 🎉
Obfuscator動的プロキシパフォーマンス

パフォーマンス

動的プロキシによって加わるコストは 2 種類あり、どちらも小さなものです。

  • プロキシ化された呼び出しサイトごとに 1 回だけかかるコスト:プロキシ化されたメンバーが最初に呼び出されるとき、挿入されたリゾルバーが呼び出し先を解決し、デリゲートを接続します。この処理は遅延して(実際に到達した呼び出しサイトに対してのみ)、呼び出しサイトごとに 1 回だけ行われます。非常に多くの異なる呼び出しをプロキシ化するアプリケーションでは、起動時間や初回使用時の時間が、小さいながらも測定可能な程度に増えることがあります。
  • 定常状態でのごくわずかなコスト:最初の呼び出しの後は、キャッシュされたデリゲートを経由して呼び出されます。呼び出しごとに加わるオーバーヘッドは数ナノ秒程度で、大多数のコードでは問題になりません。

呼び出されるメソッドの本体自体は変更されないため、実質的な処理を行うメソッドは、実際には影響を受けません。オーバーヘッドが目立つのは、非常にホットなループ(数百万回の呼び出し)で呼び出される、極めて小さなメソッドの場合だけです。そのような場合や、コードの一部だけが機密性の高いものであるときに起動を速く保つには、フィルターを使用して、アセンブリ全体ではなく、保護が必要な呼び出しだけをプロキシ化してください。

動的プロキシによる保護は難読化のレイヤーを追加しますが、プロキシクラスの生成と初期化のために、アプリケーションの起動時間にわずかな影響を与える可能性がある点に注意してください。ただし、セキュリティの向上と、わずかなパフォーマンスへの影響とのトレードオフは、ほとんどの場合、十分に見合うものと考えられています。

Last updated on