it技術:dotnet
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
it技術:dotnet [2020/12/18 15:47] – [staticクラス] yajuadmin | it技術:dotnet [2022/04/13 14:52] – yajuadmin | ||
---|---|---|---|
行 40: | 行 40: | ||
===== 初回起動が遅い ===== | ===== 初回起動が遅い ===== | ||
+ | 「エンド・ユーザーは、0.5秒のフリーズでストレスを感じ、3秒のフリーズはバグだと思う」。昔、冗談半分に言ってみた言葉だが、回りの反応を見るに、割とみな思っていることらしい。\\ | ||
+ | https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
別の.NETアプリケーションが既に動作していれば起動は速いがPC起動時など遅い。\\ | 別の.NETアプリケーションが既に動作していれば起動は速いがPC起動時など遅い。\\ | ||
理由は、.NET Framework 自体のロードをファイルシステム・キャッシュ上に乗せるためで「コールド スタート」と呼ばれる、別の.NETアプリケーションが既に動作していると「ウォーム スタート」となる。\\ | 理由は、.NET Framework 自体のロードをファイルシステム・キャッシュ上に乗せるためで「コールド スタート」と呼ばれる、別の.NETアプリケーションが既に動作していると「ウォーム スタート」となる。\\ | ||
ウォーム スタートは、主要なCLRコンポーネント用のページの殆どが既にメモリに読み込まれているときに発生し、貴重なディスクアクセス時間が節約されます。このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。\\ | ウォーム スタートは、主要なCLRコンポーネント用のページの殆どが既にメモリに読み込まれているときに発生し、貴重なディスクアクセス時間が節約されます。このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。\\ | ||
[[https:// | [[https:// | ||
+ | |||
+ | コールドスタートアップはIOバウンドだから当然ngenでは速くならない。2度目以降の起動時間が短くなるのは、OSが一度読んだブロックをメモリにキャッシュしているから。 | ||
起動を速くするににプリコンパイルする「Ngen.exe」を使用する方法がある。インストール時にカスタムアクションでNgen.exeでプリコンパイルするといった手法もある。\\ | 起動を速くするににプリコンパイルする「Ngen.exe」を使用する方法がある。インストール時にカスタムアクションでNgen.exeでプリコンパイルするといった手法もある。\\ | ||
[[https:// | [[https:// | ||
但しプリコンパイルの効果は永続的ではなく、.NET Frameworkなどのバージョンが変わったりなどの条件によって効果が消えてしまう。\\ | 但しプリコンパイルの効果は永続的ではなく、.NET Frameworkなどのバージョンが変わったりなどの条件によって効果が消えてしまう。\\ | ||
- | [[https:// | + | * [[https:// |
+ | * [[https:// | ||
.NET 4.5以降では、NgenがWindowsサービスとして動いている(Auto-Ngen)\\ | .NET 4.5以降では、NgenがWindowsサービスとして動いている(Auto-Ngen)\\ | ||
- | 基本的に、.NETランタイムは、管理対象アプリケーションの使用ログを生成します。システムがアイドル状態の場合、自動メンテナンスタスクがバックグラウンドで実行され、ネイティブイメージが生成されます。これにより、開発者はNGenを明示的に扱う必要がなくなります。< | + | 基本的に、.NETランタイムは、管理対象アプリケーションの使用ログを生成します。システムがアイドル状態の場合、自動メンテナンスタスクがバックグラウンドで実行され、ネイティブイメージが生成されます。これにより、開発者はNGenを明示的に扱う必要がなくなります。< |
+ | ※.NET 5以降(旧.NET Core)では、GACの概念は存在しなくなる。\\ | ||
+ | [[https:// | ||
他にも64bit OS上だとJITのパフォーマンスが悪くなるとの報告がある。x86で作成すると良いらしい。\\ | 他にも64bit OS上だとJITのパフォーマンスが悪くなるとの報告がある。x86で作成すると良いらしい。\\ | ||
行 66: | 行 77: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
===== アセンブリの厳密名と特定バージョンについて ===== | ===== アセンブリの厳密名と特定バージョンについて ===== | ||
==== 厳密名について ==== | ==== 厳密名について ==== | ||
行 244: | 行 256: | ||
==== 複数選択のコンボボックス ==== | ==== 複数選択のコンボボックス ==== | ||
- | 標準のコンボボックスでは複数選択はできない。そのため、カスタムコントロールを作成しないと実現できない。 | + | 標準のコンボボックスでは複数選択はできない。よってカスタムコントロールを作成しないと実現できない。 |
どちらも C# で作成されている。 | どちらも C# で作成されている。 | ||
- | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
==== その他 ==== | ==== その他 ==== | ||
* [[https:// | * [[https:// |
it技術/dotnet.txt · 最終更新: 2022/06/23 17:23 by yajuadmin