[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part23



1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part22
pc11.2ch.net/test/read.cgi/tech/1197802312/

397 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 18:52:22 ]
そもそも意図的にcatchに移したい処理なんて
設計に問題があるだろ

398 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 19:02:25 ]
たぶん発想が逆立ちしてるんだろうね。
本来例外処理の外に置くべき処理をcatchの中に書いちゃってる、
なんてオチだと推測する。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:55:41 ]
変数が使われてなかったりするとエラー一覧ウィンドウで「警告」で表示されますが
「メッセージ」も文法的な間違いを発見すると表示されるのですか?

400 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:13:57 ]
メッセージって""内のメッセージか?
警告と並列で括弧でくくってある意味がわからん

401 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:53:03 ]
エラー一覧のウインドウに並んでる
[エラー] [警告] [メッセージ]
のことだろう。
俺もまだ見たことないな。

402 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:52:07 ]
例外の使い方だけど

try
処理1
処理2
catch(ex1)
エラー1
catch(ex2)
エラー2
catch()
想定外エラー

で処理1と2は戻り値無しでNG時にex1とex2をthrowする
って使い方は邪道?
例外は関数エラーに使うべきじゃなかたりする?

403 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:57:22 ]
そうやって使わないで何に使う

404 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:58:44 ]
むしろそれ以外の使い方があったら教えてほしい。

405 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:22:08 ]
それ以外の使い方したら読みにくいだけだろw



406 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:30:16 ]
想定外の例外を握りつぶすのがいいかどうかは賛否の分かれるところじゃなかろうか

407 名前:デフォルトの名無しさん [2008/01/22(火) 02:27:48 ]
C#ってスクリプト言語くらい気楽に使えるようにならないの。
いちいちコンパイルとかウザいし。

408 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 02:35:52 ]
>>397
そうでもないキガす。
とりあえず例外処理に関してテスト条件なんて作らずに
投げたらどうなるんだか見てみたいなんて話はあるかも
しれない。 これはテストをはしょるズボラな俺だけか。

409 名前:デフォルトの名無しさん [2008/01/22(火) 06:50:59 ]
JavaScript書き出された文字列を取得
する方法はありませんか。

ブラウザコンポーネントで例えば
document.write("abc")と書かれていれば
このabcを取得したいとのですが。

410 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:47:29 ]
>>400,401
[エラー] [警告] [メッセージ]の[メッセージ]の項目です。
ASPでweb.config内でカスタムセクションを追加した時に、
「属性○○のスキーマ情報が見つかりませんでした」と[メッセージ]でエラー一覧に表示されました。
でも問題なく動作してるのでそのまま続けてみます。
ありがとうございました。

411 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 08:48:26 ]
>>409
document.body.innerText
つーかおもっくそスレ違い

412 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 09:52:11 ]
>>407
ソースコードから実行てのはふつーにできるから調べてみれば?
使い物になるかは別だが。


413 名前:デフォルトの名無しさん [2008/01/22(火) 18:24:43 ]
CSVの質問です。

//string FileName = "二バイト文字テスト";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(str.ToString() + ".csv"));

上記のようにファイル名が2バイトになっても正常に「開く」「ダウンロード」「キャンセル」
のダイアログが出るようにしています。

ダウンロードした場合は日本語が含まれたファイル名でダウンロードできます。
「開く」をクリックした場合、エンコードされたファイル名で開こうとしてしまいます。

解決方法はありますか?
よろしくお願いします。

414 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:26:53 ]
あげてしまった・・・

補足で、開くを選択した場合エラーになります
エンコードされたファイル名を開こうとするためです。

415 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:04:33 ]
誰かが作ったクラスライブラリを利用する時は、exeと一緒にそのdllも付けなきゃならないの?
C/C++のスタティックリンクライブラリみたいにexeファイルに組み込むことできないのかな?



416 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:06:44 ]
ilmerge

署名されてたら無理だけど

417 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:43:44 ]
>>416
thx

418 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:48:44 ]
文字列を表示するときに文字の間隔を標準
(Graphics.DrawString で表示されるときの文字間隔)
より1ドットずつ狭めて表示したいと思います。

思いついたのは ExtTextOut を使用する方法ですが、
それ以外の方法(できれば p/invoke を使わなくていいような)
があったら教えてください。


419 名前:デフォルトの名無しさん [2008/01/22(火) 22:55:21 ]
Frameworkで定義されているコンストラクタを持たないクラスを使用したい場合、
どのようにすれば使えるのでしょうか?

仮に、public sealed class ModelBoneというコンストラクタが無くプロパティのみを持つ
クラスのインスタンスをローカルで一時使用したいとします。

ModelBone bone = new ModelBone(); としても
'Microsoft.Xna.Framework.Graphics.ModelBone' のコンストラクタが定義されていません'
のエラーが表示されてインスタンスを作成できません。


420 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:57:21 ]
無理
他にインスタンスを取得する方法が用意されてるはずだからそれに従う

421 名前:420 mailto:sage [2008/01/22(火) 23:02:25 ]
ちょっと見てみたけど、ModelBoneに関してはContentManager.Loadで
モデルと一緒に読み込むしかないんじゃないかな

422 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:03:23 ]
>>418
一文字ずつMeasureCharacterRangesで測ってRectangleF作って
DrawStringすりゃいいんじゃね


423 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:22:23 ]
>407
Windows PowerShell使えよ。

424 名前:419 mailto:sage [2008/01/23(水) 00:37:32 ]
>>420
やはりインスタンスは作成できないのですか・・・。
このクラスが持つプロパティを自前クラスの関数の引数で使用したくなり、
Frameworkのクラスからインスタンスを作成できない場合
全く同じプロパティとコンストラクタを持つクラスを改めて
定義しなければならないからどうしたものかと悩んでいました。

とりあえず出来ないことが分ったので、他の方法を検討してみます。
ありがとうございました。

425 名前:デフォルトの名無しさん [2008/01/23(水) 01:15:38 ]
>>423
ぜんぜん手軽じゃないじゃん。



426 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 06:25:57 ]
>>420
拡張メソッド使っても無理?

427 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 07:40:21 ]
そもそも、勝手にインスタンスを作られると不都合だから、わざわざコンストラクタを定義してないわけだ。

428 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:20:32 ]
>>426
拡張メソッドにどんな幻想を持ってるんだ

429 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:19:50 ]
>>428
なんでもできるはず

430 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:28:13 ]
拡張メソッドのおかげで魔法使いにならずにすみました

431 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:38:00 ]
formA、formB、formCがあり、
A→B、A→Cと呼び出すとします。
formBで取得したテキストボックスの値を、formCで参照したいときはどのようにしたらよいでしょうか?

432 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:39:45 ]
formAがformBから値を取得してformCに渡せばいい

433 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:45:53 ]
渡すときはどうしたらいいでしょうか?
FORMC fc = new FORMC(/*取得した値*/);
でしたっけ?

434 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:08:35 ]
コンストラクタでもプロパティでもお好きなように


435 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:13:26 ]
ところで、そのformB、formCはそれぞれ、formAからShowDialog()で呼んでいるのですが、その場合も
>>434さんの言うとおりでいいのでしょうか?



436 名前:デフォルトの名無しさん [2008/01/23(水) 11:17:23 ]
interface I1,I2,I3(既成の外部ライブラリ)があったとして、
I1 i1 = new I1();
I2 i2 = new I2();
i1.hoge = (I3)i2.hage();
みたいなコードがあるのですが、(I1〜3は既成の外部ライブラリ)

それぞれのinterfaceで定義されているメソッドの実態はどこで定義されているんでしょうか?

やりたいのはi1にひとつ例えばvoid moe(string str)みたいなメソッドを追加したclass or interfaceを作って
void moe(string str){
i1で定義されているメソッドをコール;
}
みたいな感じにしたいのですが、何から手をつけていいのかわからなくて困っています。

よろしくお願いします。

437 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:17:55 ]
お前は何を言ってるんだ
ShowDialog()で呼ぼうとコンストラクタには関係ないだろう

438 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 11:41:18 ]
>>436
I1 i1 = new I1();
I2 i2 = new I2();
↑      ↑
ここ  と  ここ を

よーく見比べてみよう

439 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:56:15 ]
印刷で困っています。
ツールボックスから印刷プレビューのダイアログ(PrintPreviewDialog)をそのまま利用しています。

プレビューでは,意図した画像が正しく表示されるのですが実際に印刷すると一ページだけ
真っ黒に印刷されてしまいます。
これを解決するためにはどこを調べなければならないでしょうか。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:10:23 ]
他のソフトから印刷してみてどう?

441 名前:436 mailto:sage [2008/01/23(水) 13:10:57 ]
>>438さん
れすありがとうござます。

見比べて見たのですが、やはりinterface同士でなにがおこっているのか理解出来ません

new Interface();
という構文自体が何をしているのかわからないのですが、
もう少しヒントいただけないでしょうか?

442 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:26:54 ]
>>441
よく見ろ。newしているほうはインターフェイスではないはず。

443 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:38:08 ]
>>440さん
お返事ありがとうございます。
ほかの印刷ソフトでは正常でした。
PrintDocumentのデータはどのタイミングで破棄されるようになっているんでしょうか?
何度やっても再現してしまいます。。。

444 名前:436 mailto:sage [2008/01/23(水) 13:40:26 ]
何度見てもinterfaceです。
そのインターフェースの定義を見ると
[Guid("hoge")]
[CoClass(typeof(I2cls))]
public interface I2 : I4
{
}

とかになっていてどうも思っている異常に複雑そうなのであきらめます。
ありがとうございました。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:45:19 ]
C#のGetFilesのメソッドについて質問なんですが
複数の拡張子(この場合jpg、gif、png、bmp)で
絞り込むのはどう書いたらいいんでしょう?



446 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 13:46:47 ]
>>445
Path.GetExtensionすりゃいいじゃん

447 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:13:02 ]
>>444
CoClass属性のが実体クラス。

448 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:50:08 ]
>>445
C#の、ってここはC#スレだ、決まってんだろ、ハゲ
第一C#の、じゃなくて.net frameworkの、だろ、ハゲ
それにクラス名まで、書けや、ハゲ

Directory.GetFilesならsearchPatternとるオーバーロードがあるっしょ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:20:38 ]
ツンデレの>>448に萌えた

450 名前:デフォルトの名無しさん [2008/01/23(水) 17:48:10 ]
>>448
揚げ足とるな。ばか!!!!!!!!!!!!!!

451 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:50:18 ]
>>450は騙り?

452 名前:デフォルトの名無しさん [2008/01/23(水) 18:47:52 ]
トランザクションオブジェクトつくって
INSERTとかUPDATEとかしたあと
コミットもロールバックもしないとどうなりまつか?

453 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 19:40:34 ]
コネクション閉じる時点でロールバック。
だったと思うけどプロバイダに依存しそう。
ものによっては保留状態になるかも。
いや、手動トランザクションなら保留はないかな?


454 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:36:10 ]
>>453
トンクス
SQL Serverだとそんな感じみたいでつね

455 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:26:09 ]
TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,Text



456 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:31:33 ]
すいません,誤って途中のものを書き込んでしまいました。

TabControlのTabPageにいくつかTextBoxとRichTextBoxを配置しました。
あるタイミングで,TextBoxとRichTextBoxのレイアウトを Fixed3D から FixedSingle
に一気に変更しようとしています。

テキストボックスの変更はできたのですが,同様の方法でRichTextBoxの変更ができませんでした。
以下のようにしたのですが,何が問題でしょうか。
RichTextBox rtb = new RichTextBox();

foreach(Object ctrl in tabControl1.SelectedTab.Controls)
{
if(ctrl.GetType().Equals(rtb.GetType()))
{
rtb = (RichTextBox)ctrl;
rtb.BorderStyle = BorderStyle.FixedSingle;
}
}

457 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:56:04 ]
>>456

・まず直接フォームのリッチテキストのフィールドで同じことをしてどうなるか
 確認しよう。

・ブレークポイントの使い方を覚えよう。

・こんなくだらないことでいちいち悩んでるようなら、君才能ないのかも

458 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:10:40 ]
RichTextBox rtb = new RichTextBox();
こうしてから、
if(ctrl.GetType().Equals(rtb.GetType()))
こう判定して、
rtb = (RichTextBox)ctrl;
こうやってしまうところに並々ならぬ才能を感じた。


向いてないよ、やっぱり。

459 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:19:16 ]
なれてないだけ

as null

460 名前:456 mailto:sage [2008/01/24(木) 00:24:57 ]
>>458さん
ご指導ありがとうございます。
勉強になります。

>>459さん
nullなんですね。
ありがとうございます。

デバッガの使い方も分からず,すいません。
ブレークポイントを指定してBorderStyleを見てみるとちゃんとFixedSingle
になっていました。
RichTextBoxはFixedSingleにしても表示が変わりませんでした。
もしかして,そういうものなんですかね。

461 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:47:41 ]
if(ctrl is TextBox)
って,できるんですね...orz

462 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:10:50 ]
キャストするならctrl as TextBoxとしてnullかどうか見た方がいい。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:12:35 ]
>>462
ありがとうございます。
459さんのヒントを頂き,そのようにしました。
型判定について全く無知でした。。。

464 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:11:02 ]
検討違いなこと言っていたらすみません

public static void func(string str1, string str2, bool flag){
 処理
}
このような文字列を2つと論理型で1つを引数とする関数を再帰的に呼び出す部分なのですが
今現在作成中のプログラムの中で、この関数による処理がほぼ全てのようなものです

なのでこの再帰的にこの関数を呼び出すという部分について何か最適化の方法がないかと探しています

関数内の処理はforeachと.NET内のクラスを利用したものでほぼ埋まっているため
そちらに関しては最適化はやりようがないかなと思っています

それではよろしくお願いします

465 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:21:53 ]
>>464
プログラムの概要を教えてもらえんとなんともなぁ
そもそも本当に再帰が必要なのかもわからないし



466 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:42:20 ]
>>465
すみませんでした、書くと長いので概要を

str1にはディレクトリへのパスを(こちらをA)
str2にはまた別のディレクトリへのパスを(こちらをB)受け取ります。

Bが存在するか確認
A内に存在するファイルを探していきながら、随時B内にA内のファイルを移動していく

その後、A内でディレクトリを検索し、無ければ終了、発見した場合
(今現在のstr1とstr2の値が以下だとしたら
 str1 C:\aaa
 str2 D:\xxx)
A内でディレクトリ検索をして見つけたものが
C:\aaa\abcだとすると
func("C:\\aaa\\abc", "D:\\xxx\\abc", true)
こんな感じで自信を呼び出します

つまりBディレクトリ以下にAディレクトリをサブフォルダ内等一切合財移動させるという感じです


467 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:49:16 ]
最適化する意味はどこにもないな。
せいぜい再帰やめることで万が一のStackOverflowを回避するぐらい。

468 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:06:46 ]
再帰させる必要ないでしょ。
Private Sub moveFile(ByVal a As String, ByVal b As String)
Directory.CreateDirectory(b)
Dim files() As String = Directory.GetFiles(a, "*.*", SearchOption.AllDirectories)
For Each f As String In files
Dim newpath As String = f.Replace(a, b)
Dim newdir As String = Path.GetDirectoryName(newpath)
Directory.CreateDirectory(newdir)
File.Move(f, newpath)
Next
End Sub

469 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:22:56 ]
なんでVBなんだよ。死ぬほど読みにくいわ
466は書くと長いって書いてるんだから
全部のファイルじゃなくて、何か条件付けがあるんだろ

470 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:49:37 ]
手元のマシンには、VBしか入っていないからVBで答えたまで。
なんか条件付けがあるというのならなぜその条件を説明しない。
その条件をこっちで考えろってか?
全部のファイルじゃない?
「一切合財移動させる」と書いてあるだろ。

471 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:53:22 ]
.netじゃフォルダ移動したら、その下にあるのも一緒に移動しないの?

472 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 18:08:56 ]
>>470
スレタイ読んでくれよ・・・

473 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:24:41 ]
 C++の頃に、switch文を嫌ってポリモーフィックを使って対応していた場合(GoFのstateやTemplete Method系?)、
C#にそのまま移植するとキャストやガベコレの為に返って処理が重たくなる事は有りませんか?

 これから具体例を用意しようと思いますが、2,3時間後になると思うので、
場合によるときは何処が焦点になるか、忠告頂けると助かります。
ちなみにC# 2.0です。ジェネリックの恩恵を受けれると嬉しいのですが。


474 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:34:38 ]
参照型→参照型のキャストは無問題
参照型→値型はボクシングが入って遅くなる
void Hoge<T> where T : IHogeHoge (T value) { ... }
こうすればボクシングは回避できて、インターフェイスメンバも使える
メソッドが一つならインターフェイスじゃなくてデリゲートを使うのも流行り

475 名前:474 mailto:sage [2008/01/24(木) 19:35:30 ]
間違えた
値型→参照型はボクシングが入って遅くなる



476 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:35:38 ]
そこが処理のボトルネックになってるかどうかがまず問題だろ

477 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:45:25 ]
>476 swichを使いたがる人に人的な問題が有るだけなので、ネックにならない事がわかればすっきりできます。

>474さんのおかげで解決ですけど、私も興味が有るので、もうちょっと面白い話がを集めたいんですけどスレ違ですかね。

私が今書き出したサンプルはデリゲートの方がスマートっぽいので練り直さないと。
void Hoge<T> where T : IHogeHoge (T value) { ... } を有効利用したサンプルを書けてないと足下をすくわれそうだし。


478 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:11 ]
手段と目的を履き違えていないか?

479 名前:477 mailto:sage [2008/01/24(木) 20:07:17 ]
>478
そうですね。 「参照型→参照型のキャストは無問題 」の理由は解ってないし。
>where T : IHogeHoge (T value) { ... }  は自分の件では要らない事が、返事を書いてから気づきました。

未だベンチテストとかできる状態では無いのでボトルネックの洗い出しはできません。

 目安としてはポリモーフィックされたupdate()関数は一秒間に180回ぐらい行われて、 satateが切り替わるのは2,3秒に一回あるか無いかです。
それでupdate()関数内に switchが有るのは嫌だなと思う次第です。

480 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:42:01 ]
C# を使うことそれ自体がボトルネックだとおもいまーす

481 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:53:24 ]
switch使ったっていいと思うが
Enumってswitch用じゃね?

482 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:11:10 ]
問題のサンプルソースできた。
100行ある。ここに貼るとしたらどうしたら良い?

483 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:27:57 ]
(´・ω・`)しらんがな

484 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:30:45 ]
お好きにどうぞ
ttp://zero0.x0.com/mc00/upload.php

485 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:37 ]
ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286835.udn
オリジナルのファイル名でDLすると良いみたい。

かなり汚いけど、これのswitch版を作ってみる。



486 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:32:53 ]
一秒間に180回なら全く気にする必要ないだろ

487 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:44:26 ]
stringの連結とかやってる時点で無意味だろ

488 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:52:36 ]
switch有りのソース
ttp://www.uploda.net/cgi/uploader1/index.php?file_id=0000286840.udn

結果
switch無し 117261
switch有り 114267

switchの方が良かった。\(^o^)/
 おまえらさー、 これ信じて本当に大丈夫?

>487 良い事言った。

489 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:57:23 ]
テキスト連結を削除して試したら両方15ms以下で終わったよ

490 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:03:37 ]
>489
LinkedListの大きさを20000にして、string xをint xにして只の足し算にした。

switch無し 35928
switch 21836

C#のキャストってやっぱり痛いんだな。

491 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:33:24 ]
インライン展開されてるみたい
[MethodImpl(MethodImplOptions.NoInlining)]をswitch版のupdateに付けてみ

492 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:51:29 ]
つけては見ましたけど、特に変わらなかったです。 21600ぐらい。
---------
using System.Runtime.CompilerServices;
--中略---
 [MethodImpl(MethodImplOptions.NoInlining)]
 public void update()
 {
  switch (this.state)
-----

UMLやDPを使って設計した方が遅くなるってのはC#ユーザーなら通らされる道なんでしょうね。
キャストやガベコレの世界ってこうなっちゃうんだな。 UMLは概念?だかで実装はswitch。

493 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:10:11 ]
間違えた
インライン展開抑制でこっちで効果があったのはFunc1updateとFunc2updateの方。差がかなり小さくなった。
まあつきつめたらswitchの方が速いのは当たり前だけどそんなことに意味があるかどうかの方が大事

494 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:42:57 ]
そりゃそんな感じの作りならswitchのが効率いいだろうし
3パターンじゃなおさらswitch有利だろうけど
だからどうしたってレベルの話だな。

そのレベルでパフォーマンス重視ならC#なんざ使うのが間違い。
まあ大抵はこんなレベルの差はどうでもいい。
普通は処理そのものがもっとずっと重いしな。


495 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:53:04 ]
でどこでキャストとガベコレが関係してるわけ?



496 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:56:41 ]
まったく関係ないw
switchの方が最適化されて有利っていうだけのこと

497 名前:464 mailto:sage [2008/01/24(木) 23:57:54 ]
レスくださった方、ありがとうございます

最適化の意味がないというのがいまいちピンと来ませんでしたが
少し説明不足なところがありました。
関数内の処理をどうこうしたいのではなく、関数に引数を渡す部分に関して
何か速度を上げるのに繋がる手法のようなものがあれば・・・と思ってのことでした
なので検討違いかもしれないと今でも思っていますorz

再帰処理がいらないという意見がありましたが、私自身の力量ではこれで全力でして
これ自体アドバイス貰いながらの完成だったりします。
どんどんと階層を深く辿るにはどうしてもこれ以外の方法が思いつきませんでした






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef