- - PR -
[C#] 状況に応じてコンパイルのタイミングを細かく制御したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-07 13:31
諸農です。
かなりディープな話題だなぁと思っていたんですが。。
StringDictionaryのインデクサではないんですか? 製造物の品質、開発生産性を追及していると断言している割には、 コーディングレベルがお粗末なのでは、と感じます。 --追加-- 製造物の応答性能にも気を遣っているといわれていますが、 コレクションのインデクサアクセスなんかは考慮に入っているんですか? どこまでの検証をしているのか、少し怪しく思います。 --追加終わり-- _________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2004-09-07 13:34 ] | ||||||||
|
投稿日時: 2004-09-09 12:41
ということなら、マネージドなコードでプログラムを作成しようと いうこと自体に問題があると思います。
GCって言葉ご存知ですか? そしてGCがどんなものか理解できてますか? 起動時のことしか考えてないみたいですけど、実行中にGCが 自動的に動作しますが。。。 ということで、すなおにC++で作成されることをおすすめします。 | ||||||||
|
投稿日時: 2004-09-11 14:33
応答性能を改善する目標で引き続き、ngen.exeを試しています。
Q1.下記の手動操作は正しいでしょうか? Q2.アセンブリについての理解が不十分です。 ネイティブイメージのキャッシュについて教えてください。 実体どこに置かれているのでしょうか?メモリ上ですか? それともキャッシュファイルがあるのでしょうか? また、どれだけの期間有効なのでしょうか? つまり、Windowsを再起動しなければずっと有効なのでしょうか? ★事前準備 (1) コマンドプロンプト画面を開く (2) AssemblyInfo.csのAssemblyKeyFileに"mykey.snk"と記述する (3) mykey.snkの生成 "C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\"sn.exe -k C:\test\mykey.snkをAssemblyInfo.csと同じディレクトリにコピーする。 (4) ソリューションをReleaseモードでビルドする (5) ngen.exeでネイティブイメージをネイティブイメージキャッシュに作成する C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\ngen.exe WindowsApplication1.exe (6) コマンドプロンプト画面を閉じる ------------------------------------------- ★ターゲットアプリケーションの起動(毎回) (7) WindowsデスクトップからWindowsApplication1.exeのショートカットを クリックする。(起動時間および応答性能が改善されているはず) | ||||||||
|
投稿日時: 2004-09-11 15:19
良く分かりませんが、「ネイティブイメージを作成する」というだけの目的に関しては、ビルド後にngen.exeを実行するだけでは? 細かいところはツールのマニュアルを読むしかないでしょう。
「ネイティブ イメージ ジェネレータは、マネージ アセンブリからネイティブ イメージを作成し、そのイメージをローカル コンピュータ上のネイティブ イメージ キャッシュにインストールします。ネイティブ イメージ キャッシュはグローバル アセンブリ キャッシュの予約済み領域です。」 だそうです。 まあ、少なくともngen.exeをインストール時に実行するとかって話が出てくるんですから、メモリ上のみとか、再起動すると無効と言う事はないはずですよね。 ぱっと読んでみた感じでは、特に期限とかの話もなさそうですし、特別な事がない限り(対象となるアセンブリで)一回実行したらずっと有効でしょう。 ngen.exe /show とかやればイメージの一覧が出るので、実際にできているかは確認できます。 | ||||||||
|
投稿日時: 2004-09-12 12:11
小野さんの、
を、よ〜〜く、吟味することを薦めます。 結局マネージコード、つまりメモリ使用を管理されているコードなので、ガベージコレクタが走ると、その間実行が停止します。これはいつ走るか、制御できません。また、テスト中にその状態が発生することも、あまり期待できません。完全なブラックボックスだからです。したがって、一番応答性が欲しいときに止まってしまう可能性があります。ネイティブコードに変換していても、マネージドコードであることに変わりはありません。 ・・・それでいいのですか? |