1 名前:デフォルトの名無しさん [2007/08/26(日) 12:42:25 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part41 pc11.2ch.net/test/read.cgi/tech/1184840053/ 過去スレは>>2-5 あたり。
236 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:27:52 ] 実行時にネイティブにコンパイルされるといったって C#は安全性を気にして余計な処理をしてるだろ Cとかと比べたらどうしたって遅くなる
237 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:28:44 ] >>235 速度の違いが体感出来ないならC#使ってもデメリットはない プログラミングが楽になるからC#使った方がいいというわけだな
238 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:29:28 ] >>232 そりゃJITだけどCにゃ負けるようだよ shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all これはMonoだが、Java Server VMの性能が参考になるだろう
239 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:32:20 ] そもそも.NETで不満になるようなアプリってどれぐらいあるんだ? 大体.NETは実行スピードと生産性のバランスの中のひとつの解に過ぎないだろ
240 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:34:25 ] .NETは計算速度はそんなに遅くねぇけど 起動がのろいのとGUIもっさりはどうしようもねぇな
241 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:36:40 ] ソース出ないね やっぱり法螺吹きか
242 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:37:14 ] >>234 CLIランタイムをロードする時間に比べりゃ、正規表現のコンパイルにかかる時間など 微々たるもんだろw
243 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:38:13 ] Win32のBitbltとか呼んでももっさりするかね?GDI+よりは早い。
244 名前:243 mailto:sage [2007/09/03(月) 01:38:59 ] すまん。最後は疑問系です・・・(ノД`)
245 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:41:19 ] >>243 DDBのblitはGDI+の10倍は速いらしいな その時点でWinFormsだめぽ
246 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:45:05 ] >>241 そんなに気になるんなら自分でためせばいいのに 以前俺が実験したソースをあげるよ ttp://www.borujoa.org/upload/source/upload14325.zip 青空文庫のテキストを適当に置換するプログラム inputというフォルダにサンプルの入力ファイルがあるが、300K程度の サイズだから、気になるならデカくしてみるんだね
247 名前:デフォルトの名無しさん [2007/09/03(月) 01:53:14 ] >>239 それはあくまで作る側の屁理屈 使う側からすれば、生産性なんてどうでもいい あなたが、よく使うアプリケーションが次バージョンから.NETで書かれたらどう思う? LightWaveが.NETなんかで書かれたら俺は間違いなくMAXへ移行する
248 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:57:26 ] >>247 えーとね、生産性悪くなるとコストがかかるんだよ。 それは製品価格に反映されたり、次バージョンで実装される機能が少なくなったりすることになるんだよ。
249 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:05:21 ] >>247 なんでアセンブラでつくらねーんだっていってみろ。
250 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:06:39 ] まあ、問題は、場合によっては普通にLL言語にさえ後れを取る C#がバランス上最適解かどうかだろうなw
251 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:06:52 ] 製品の値段に直結するぞ。 機能も少なくなるぞ。 品質が下がることもあるぞ。
252 名前:デフォルトの名無しさん [2007/09/03(月) 02:07:02 ] けど、C#が使えないのは事実 C#しかつかないやつはVC++で開発してる部署に行ったらほぼ終わり
253 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:07:34 ] >場合によっては普通にLL言語にさえ後れを取る 絶対にLL言語に遅れをとらない言語ってなんだよw
254 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:09:30 ] VC++しかつかないやつは他の言語で開発してる部署に行ったらほぼ終わり
255 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:14:15 ] >>246 ・300kのIO速度の計算をスルー ・300kのSJISから内部コードの変換(UTF-16やutf8)コストもスルー ・(C#)2000行の無駄なnew StringBuilderとToString、+演算子置き換えで高速化 正規表現のベンチになってないよ
256 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:17:16 ] >>255 うん、正確な正規表現のベンチのつもりで書いたのではないよ それが求めるものなら自分でやってくれ IO処理は「どの言語でも」やっている ユニコードへの変換も「どの言語でも」やっている オーバーヘッドの大きそうなフォーマット処理も、PerlやPythonでもやっている 概ね、カリカリに書かずに適当に同じレベルで「普通に」書きなぐったものだ 特に何かをひいきしたつもりは無い そうやって書いたものが、スクリプトが案外速かった(C#より速い)ってのが 重要ね。
257 名前:256 mailto:sage [2007/09/03(月) 02:28:23 ] ちなみにC++も三種類書いてみたが大して速くなかったね。 ソースを見れば分かるが、LL言語で書くよりずっと複雑でトリッキーで エラーを産みがちなコードになるというのに。 こんな仕事はLL言語向きだ。他の解は馬鹿げている。そう思ったよ。 そして、そういう仕事は案外多いのだと思う。
258 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:37:29 ] プロセスの生成負荷も考慮されてない… C#、C++、Perl、Pythonではエンジンの起動時間は大きく違うし、 いくらなんでも、これで決めつけるのは早計だと思うが。 俺のPCでは、C#の方がPerlより速かったり遅かったりだった。 一瞬すぎて測れない。 Core 2 Duo E6600, 2GB, Win Vista Super Fetchがどこまで効いているかはわからない。 明日kwsk調べようかな。
259 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:45:50 ] 正規表現の処理の話をしてるときにこれはない
260 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 02:46:28 ] つうか試してないけどコンパイルしないほうが早かったりしてよw
261 名前:256 mailto:sage [2007/09/03(月) 02:54:56 ] >>258 入力ファイルデカくしてみそ 二回目以降はキャッシュが効くし、入力が十分デカければ起動時間は誤差の範疇に 持ち込めると思うが ちなみに俺の環境はXP、Pentium M(1.7GHz), RAM 500Mだからずっとショボい >>259 純粋に正規表現エンジンの性能を計りたいんなら、そうだね 俺がやったのは、正規表現を用いた典型的なPerlの使い捨てスクリプトレベルの 仕事を各種の言語で書いてみた、それだけのことで、やっている仕事自体は どの言語でも同じだよ
262 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 03:15:34 ] せめてマッチ対象文字列は、メモリに確保しておかないとベンチにならんだろw
263 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 05:29:41 ] 起動が早い言語の勝負じゃないからな
264 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 09:15:08 ] >161 ご回答ありがとうございます。 そんなことを頻繁にするかどうかは知らんよ。 俺がちゃんとわかってる人かどうかは あんたが決めることじゃねえよ。スキルチェックでもしてくれ。
265 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 10:34:36 ] プログラマーなんだから、C++とC#両方使えるようになろうや。
266 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 11:35:59 ] C++なんぞ使ってると脳みそが腐るぜ
267 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 11:39:14 ] C++使ってる奴がまだ居たなんて・・・
268 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 12:30:18 ] C++は使えませんが、C++でできています。
269 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 12:58:35 ] C++はC++でできています
270 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 13:29:49 ] gccがgccでコンパイルできるようになりました、というのは結構画期的なことだったらしいが
271 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 14:01:15 ] foreachループ変数が書き込み禁止だってことを今更ながら知ったのだが・・・ なんでこんな制限があるんだ? コレクションに変更を加えるわけじゃないし問題ないと思うんだけど。
272 名前:デフォルトの名無しさん mailto:age [2007/09/03(月) 15:49:14 ] C#で変数名に変数を使うやり方ってどうやるんですっけ? test_i(i=1,2,3・・・)みたいな。
273 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 15:54:20 ] 配列を使いましょう
274 名前:デフォルトの名無しさん [2007/09/03(月) 16:06:14 ] >>271 たとえば string[] strArray = new str[]{"a","b","c"] foreach(string str in strArray) { s="d" } ってやってもstrArrayには反映されない。 foreachの列挙子はIEnumerableの実装いかんによっては、何を 参照しているのか全く保障されない。 IEnumeratorは上記の例のようにコピーを返してくるかも知れない。 あと、IEnumuratorの実装クラスは「列挙」できればよく、要素の概念 を持たないものだってあるからね。 MSDNのIEnumerableのサンプルをみてみそ。
275 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:30:21 ] >>271 「変数の使いまわし」ができないようにするのが最近の流行だから。 バグが減ると信じられてる。
276 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:36:34 ] foreachって実際は while(strEnumerator.MoveNext()) { string str = strEnumerator.Current; ... } こんな感じでしょ 代入しても無意味というか、元が配列だったりすると 書き換えられるという錯覚を与えかねない というか配列のforeachは for(int i = 0; i < strArray.Length; ++i)... に置き換える最適化がされるらしいから 実際に書き換えられちゃうんでそうするとforeachの意味が変わっちゃう
277 名前:271 mailto:sage [2007/09/03(月) 16:55:47 ] >>274 >>276 foreach変数ってIEnumeratorの実装に関わらずスタック上に置かれるものでは。 構文上もそこで宣言してるわけだし、直接書き換えられると誤解される余地もないと思うけど。 >>275 それで余分な変数を導入する方が場合によっては可読性が落ちると思うんだけどなあ。 というかforeach変数だけ禁止しても意味がないような・・・
278 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:01:33 ] >>277 たしか、usingとかfixedとかで宣言した変数も使いまわしできないな。
279 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:55:02 ] むしろforが例外か
280 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:45:58 ] >>271 は単に参照型と値型の区別がついてないというか、データがメモリにどう 配置されるかのイメージがつかめてないだけの気がする。 >>275 は意味不明だと思う。 繰り返し変数はもとの変数のビットイメージのコピーであってもとの変数そのものではない。 これが理解できていれば271はそもそも愚問であって、こんな疑問は抱きようがないんじゃないか?
281 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:55:24 ] その後の流れをちゃんと読めよw 271はforeachでコレクションの内容を変更したいんじゃなくて、例えば //引数に与えられた値+2を返すメソッド int Plus2(int value){ value += 2; return value; } みたいなことをforeachの繰り返し変数でもやりたいんだろ
282 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:13:55 ] int Plus2(int value){ return value + 2; } でいいじゃん
283 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:20:09 ] なんという正論
284 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:20:50 ] >>282 頭悪そうだな・・・
285 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:22:57 ] まあ281の例えも悪いよ。 変に例える必然性なんて全然ないのにね。
286 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:24:32 ] というか、+2と決めうちなのにメソッド作る意味があるか?
287 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:26:09 ] 281の方が頭悪そうだ
288 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:26:40 ] >>271 あるいは逆にコレクションに変更を加えようとしてミスるプログラマが出るのを予防するためだな。 D言語ではforeachの制御変数には明示的にrefキーワードをつけないと、代入できないようになってる。
289 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:30:55 ] それどんな感じで列挙子を実装するの?
290 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:33:54 ] >>288 そんなアホグラマは正直無視でいい・・・ と思うのは俺だけ? だってそんなこといったら仮引数だって変更不可にするべきじゃん
291 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:42:45 ] >>289 int opApply(int delegate(ref T));というメンバ関数を実装する。 www.kmonos.net/alang/d/statement.html#ForeachStatement >>290 Dでは仮引数にinキーワード(あるいは、finalキーワード)を追加することによって、仮引数への代入が制限されますよ。 要するに、最近は酔っ払いでも使えるような言語設計が流行っているのだ。
292 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:50:44 ] フェイルセーフがあるのは結構な事じゃないか
293 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:01:28 ] いつも酔っぱらってこーでぃんぐしてるからありがたい
294 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:45:38 ] 参照型の場合 foreach (Hoge h in Hoges) { h = new Hoge(); // はダメでも h.Member = 123; // は全然OKだから あまりガードにはなってないよね。
295 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:55:27 ] …なんか勘違いしてないか?
296 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:11:00 ] >>295 なんかって何?一言主さん
297 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:13:01 ] フェイルセーフがいいならC++のconstなんか真っ先に導入しなきゃダメだろ キャッチしなきゃいけない例外も必要だろ C#はそういうのが意図的に外されてるんだな 意味ないから
298 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:15:50 ] VC++(2005)のMS拡張構文ではconstのあるなしで調整できるようだ。 // cl /EHsc #include <vector> #include <iostream> int main() { std::vector<int> v; v.push_back(1); v.push_back(3); v.push_back(5); for each(int r in v) { r++; // OK std::cout << r << std::endl; } for each(const int r in v) { r++; // Error std::cout << r << std::endl; } }
299 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:18:01 ] >>297 いや、チェック済み例外は明らかに設計ミス。
300 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:21:40 ] しかしネットワークなんかだと、 絶対に間違いが起きる可能性がある処理はあるわけじゃない そういうのをどうやって実装すればいいの
301 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:27:25 ] そんなのインテリセンスなりナンチャラペットの水準でサポートすれば 済むことじゃないの? まあ、それ以前にドキュメントをちゃんとして欲しいよねw
302 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:09:05 ] constもチェック済み例外も問題の根は同じ。不必要に実装に結び付く(透けて 見せる)シグニチャである点。
303 名前:デフォルトの名無しさん [2007/09/03(月) 23:15:15 ] >>277 あんた、単なる素朴な疑問かと思ってたけど 真正のあほだな
304 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:16:10 ] VC# ExpressEditionダウンロードしたんだけど オフラインでMSDN見ることってできないんですか?
305 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:21:54 ] ふらっとに行くべき
306 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:31:16 ] >>302 意味がよくわからないから詳しく説明してくれ
307 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 01:41:01 ] >>290 に同意。費用対効果の低いフェースセーフ要らないぽ constだので縛ってもバグは斜め上からやってくるね。 sealedつけてたのにsealed外されるとか。 foreachといえば、配列に関してはfor文と同等の速度が出ますが、こういう情報はどこにあるのでしょうか? パフォーマンスガイドラインに重いループではforeachよりforって書いてあったので わざわざ変えたのに・・悲しい。
308 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 02:21:04 ] 英語だけどパフォーマンスの話題はここが詳しいかな msdn2.microsoft.com/en-us/library/ms998547.aspx 1.1に基づいてるからまだforが速いって書かれてはいるが・・・ msdn2.microsoft.com/en-us/library/aa137140.aspx ここにもパフォーマンスの記事が結構たくさんあるね 特にKnow What Things Costは命令ごとのコスト表が載ってて面白いかも
309 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 02:52:52 ] >>307 2.0だとforeachのほうが若干早くなってますね。 foreach (int v in ar) csum += v; for (int i=0; i < 10000; i++) csum += ar[i]; これを下のように書くとforeachと同じスピードになるからそういう最適化をしてるのでしょう。 fixed (int *sp = &ar[0]) { int *ep = sp + 10000; for (int *p = sp; p < ep; p++) csum += *p + j; } ただ、foreachの制御変数が読み取り専用なのは、フェイルセーフのためなのか、 最適化のためなのかは判断がつきません。
310 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 07:54:38 ] アンセーーーーーフ!! なるほど、「処理を直接記述されると最適化できないが 抽象度を高くすると最適化しやすい」というやつか forよりforeachの方が早い LINQも早くなるという しかしループ変数への代入を許すとこの最適化が出来なくなるわけか
311 名前:デフォルトの名無しさん [2007/09/04(火) 09:28:17 ] アンマネージドのコードと同期をとりたく、 EventWaitHandle.Handle プロパティで ネイティブのハンドルを取得しようと思ったのですが、 「古い形式です」と起こられてしまいます(警告)。 新しい形式ではどのように書くのでしょうか?
312 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 09:37:04 ] >>311 MSDNにずばり書いてあるから、まず自分で調べるくせをつけろ。
313 名前:デフォルトの名無しさん [2007/09/04(火) 09:37:06 ] あ、 EventWaitHandle.SafeWaitHandle.DangerousGetHandle() でいいみたい。 Safeなんだか、Dangerousなんだか。
314 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 10:15:09 ] >>313 DangerousGetHandle()は必要? MSDNでは、 >このクラスを使用すると、派生クラスのインスタンスでラップされたアンマネージ リソースを >識別するハンドル (オペレーティング システム ハンドルなど) をアンマネージ コードに >渡すことができます。 となってるし、使用例にあるWindowsAPIの呼び出しサンプル見ても、IntPtrの代わりに使ってる。 というか従来のIntPtrの代わりに使うべきもののように見える。 DangerousGetHandle()はデバッグのためにハンドル値を16進でダンプしたいとかの特殊用途のために 残してあるんじゃないか。
315 名前:デフォルトの名無しさん [2007/09/04(火) 11:08:29 ] >>314 なるほど。ほんとだ。 ハンドルは、PVOIDだろ、と、 [DllImport("native.dll")] public static extern void NativeFunc(System.IntPtr hHandle); して、Handleプロパティから渡していたので、、 替わりにSafeWaitHandle使えと言われても、型が違ってこまってました。 [DllImport("native.dll")] public static extern void NativeFunc(SafeWaitHandle hHandle); こうすればいいんですね。
316 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 12:42:53 ] デンジャラスなんてついてるメソッド使いたくないお
317 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 13:35:00 ] IntPtrで問題が発生したら泣き寝入りするお
318 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 18:41:40 ] >>316-317 正直、「ボキュはキモヲタだお」って言ってるようにしか聞こえない。 そういうの気色悪いと思わない自分を気色わるいと感じるべきだ。
319 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 18:48:43 ] どうか、次のVBをC#に直して下さい。 Label1.Text = Replace(Session("body"), vbCrLf, "<br />") ----------------------------------------------- VBの本の中にソースが載っていたのですが、 この1文が、どうにもわかりません。 そのコード意味は、どうやらセッションというデーター内の改行を HTMLの改行に変換するっぽいのですが・・・。(推測) ちなみに、他の行は自力で調べましたが肝心のこのコードが分りませんし、 C#でどう書けば良いのか分りません。 賢者の方々、どうか愚者の私にご指導をお願い申し上げます
320 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 18:54:20 ] >>319 少しはググるとか努力しろよ VB.NET固有の関数をC#で使用するには? www.atmarkit.co.jp/fdotnet/dotnettips/254vbfunc/vbfunc.html でも、それただの部分文字列の置換でしょ? String.Replaceか正規表現で代用できるでしょ。
321 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 18:54:33 ] >>319 zoosir.hp.infoseek.co.jp/tips/string/string03.htm C#だと省略可能引数(Optional)が無いから、全部書く必要があるらしい。
322 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:35:51 ] >304 MSDNも普通にフリーとして公開されてなかったか?
323 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:54:39 ] csc.exeやvbc.exeって開発環境がなくてもインストールされるものなんですか? C:\windows\Microsoft.NET\framework\以下にあるのでそんな気がしますが。
324 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:57:13 ] はい。実行時に使用する場合もあるので、全ての環境に含まれています
325 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:03:35 ] >>324 おお、そうだったんですか。 これで安心してCodeDomが使えます。
326 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 22:17:14 ] 標準添付はcsc/vbc/jscの三つ、だったかな確か clは非標準だよね 標準なのにドマイナーなのがひとつ
327 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:09:57 ] Control.Invoke系のメソッド呼ぶとどっかで内部的にファイナライザが必要になるっぽいな。 ループの中から呼んだりして大丈夫なんだろうか。 何千何万って呼んだらなんか嫌なことになりそうな気がする。
328 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:15:47 ] ここは散文を書くところではない。 説明調の、他人に意味がちゃんと通じる文章書けよ
329 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:23:22 ] え、ファイナライザのコストが高いことを説明しろってこと? それは説明するまでもないと思ったけど。 何が通じてないのかわからん。 Invoke系のメソッドってのはInvoke、BeginInvokeのことだよ それらを呼んだら内部的に生成されるオブジェクトでファイナライザが呼ばれるっぽいんで嫌だなって話。
330 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:37:10 ] 何をみてそう思ったの?
331 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:38:28 ] >何が通じてないのかわからん。 読む側の立場に立って自分の文章推敲できない人間はたいていそうだ。 ついでに、ファイナライザのコスト? 意味がわからない。 デリゲートを処分するコストがそんなかかるのかね? 仮にかかるとして、コストとは「時間当たりのCPUの使用量」のことだと思うが、 どのみちmsのオーダーでInvokeとか不可能だから意味がないだろう。
332 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:39:31 ] >それは説明するまでもないと思ったけど。 いったいどんな頻度でControl.Invokeなんかを実行する気だ?
333 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:44:23 ] >>327 再描画を伴わないControl.Invokeの使い道って あんまり思いつかないんだけどどうだろ? 経験上、何千何万って単位でControl.Invokeを呼ぶと 再描画コストが恐ろしいことになる。 WinFormsなら1秒間に10回ぐらいの更新でいいんじゃないかね? まあそれ言い出すとTimerでいいじゃんて話も多いんだけど。
334 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:44:31 ] >>330 CLR Profilerで見れるよ。 >>331 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndotnet/htm/dotnetgcbasics.asp この辺でも読んでくれ。 なんでデリゲートが出てくるのかわからんが・・・ >>332 別スレッドでなんかの処理中にUIを更新するために呼んだりしない? まあ何万は言いすぎかも。
335 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 01:04:23 ] >>322 ヘルプから見れるキーワードとか目次がMSDNなんですか?
336 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 01:05:13 ] >>334 読んでくれって、どこにもお前さんが主張しているような類のことは書いてないだろw