10

私はかなり大規模で複雑な winforms アプリケーションを持っています。起動時間を短縮するために、次のバッチ ファイルを使用してシリアル化アセンブリを事前に生成しました。

; delete any existing serialization assemblies
del *XmlSerializers.dll

; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a

; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*

しかし、驚いたことに、起動時間は実際には 4.6 秒から 6.1 秒に伸び、1.5 秒も跳ね上がりました。これは、コールドスタートでもウォームスタートでも当てはまりました。

だから、質問:

  1. シリアル化アセンブリを配置すると、アプリの起動が遅くなるのはなぜですか?
  2. アプリがシリアル化アセンブリを生成しているときに、Perfmon またはその他のツールを介して確認する方法はありますか?
  3. シリアル化アセンブリを正しく生成していますか?
4

2 に答える 2

1

アプリケーションのプロファイルを作成して、起動時間が増加している理由を確認する必要があります。Perfviewはそうするための良いツールになります。

JITttingに時間がかかりすぎる場合は、NGENをアプリケーションと見なしてください。ロードされるページが多すぎる場合、.Net 4.5で実行している場合は、mpgo最適化の使用を検討してください。

于 2012-08-15T03:59:39.710 に答える
0

.NET は署名が有効かどうかを確認する必要があるため

于 2012-08-14T23:47:36.123 に答える