- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
269 :207[]:2015/04/27(月) 11:28:30.00 ID:3IxpbeeH - 相談です
GUIでプログラムを作っています。(以降、Gと書きます) 配列にするか、バラバラにして個々のオブジェクトで変数定義するかで悩んでます。 具体的には、 あるサーバからの通知をGでInvokeして配列(メンバ変数1次元10000長さ)のバッファにデータを貯めています。 つまり、Gにとっては非同期でInvokeされ、配列にアクセスされるのですが Invokeが多くなると遅延してきます。 配列という1オブジェクトに対してアクセスさせているのがだめなのかと思い、 配列をやめて10000のメンバにしようかと思いました。 (つまりソースは汚いですけどガチガチのハードコーディング?みたいな感じです) こうすると、遅延が無くなると思いますか? 通知量押さえる方法は単純なんですけど諦められなくて・・・
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
270 :269[sage]:2015/04/27(月) 11:30:08.10 ID:3IxpbeeH - ちなみに通知はGにとってはミリ秒単位ですね
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
272 :269[sage]:2015/04/27(月) 11:40:04.13 ID:3IxpbeeH - ゴキブリwww笑った
もう出そうな季節ですけどね・・・
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
275 :269[sage]:2015/04/27(月) 11:49:05.14 ID:3IxpbeeH - >>273
説明下手ですみません・・・ バッファ[] ↑ FuncA() FuncA() FuncA() FuncA() : こんな感じでアクセスが待ってるんだと思うんです つかもうオブジェクト分けて実験してみないと 誰も答えようないですよね・・
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
277 :269[sage]:2015/04/27(月) 12:30:02.48 ID:3IxpbeeH - 一応自己解決しました!
高速化を追求して、配列をやめて10000個の変数を定義することにしました・・・^^;
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
278 :デフォルトの名無しさん[sage]:2015/04/27(月) 12:33:08.33 ID:3IxpbeeH - >>276
そうですね、詰まってますw ありがとうございます、その方法も後で試してみます。 趣味程度のツールだから早ければ何でもいいんです・・・
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
282 :デフォルトの名無しさん[sage]:2015/04/27(月) 21:12:43.93 ID:3IxpbeeH - >>281
ほんとに説明下手ですみません サーバでイベントが発生すると、 G側でInvokeされたシングルスレッドのFuncA()が呼ばれます。 サーバのイベントは非同期なのでいつどれくらいの頻度で発生するかは不確定です。 目視では一番多い時で秒間600〜700はFuncA()が呼ばれていると思われます。 それが一つの配列にアクセスしようとするので上の方もおっしゃっていた キュー詰まりが発生していると思われます。 ※配列アクセス速度についてググってみましたけどだいたい1.5ミリ秒らしいです。 まあ、実際配列をやめて試してみないと何とも言えないですね。 サーバのイベントをGで少なく見るようにすると遅延しなくなるので・・・ 遅延によって、サーバからのデータのタイムスタンプと Gでのタイムスタンプの差がどんどん広がっていくのが問題になっています。 実装後の結果は一応書き込ませてもらおうと思います。
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
284 :デフォルトの名無しさん[sage]:2015/04/27(月) 21:18:37.96 ID:3IxpbeeH - >>282
>遅延によって、サーバからのデータのタイムスタンプと >Gでのタイムスタンプの差がどんどん広がっていくのが問題になっています。 追記:サーバからのデータはG側のキュー待ちで随時Gの配列に更新されていきますけど、 Gで任意のタイミングで配列データを画面表示したときキュー待ちのために 実際のサーバの時刻との差が出ているということです。
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
288 :デフォルトの名無しさん[sage]:2015/04/27(月) 21:24:19.16 ID:3IxpbeeH - >>283
Invokeですか;; 一応配列をやめてやってみてだめなら試してみます
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
290 :デフォルトの名無しさん[sage]:2015/04/27(月) 21:29:28.25 ID:3IxpbeeH - >>287
画面更新は500ミリ秒ですね〜 サーバ提供のDLL使ってるから色々製薬合って変更できないんですよ;w;
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
291 :デフォルトの名無しさん[sage]:2015/04/27(月) 21:33:44.76 ID:3IxpbeeH - >>289
タイマーで画面へリフレッシュしてます。 おお〜lockですかさすがですね、ありがとうございます サーバ開いたらそれも試してみます。
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
292 :デフォルトの名無しさん[sage]:2015/04/27(月) 22:32:01.13 ID:3IxpbeeH - レス抜けてたわスマン
>>285 正直スレッドとかプログラムとかあんまわかんないですね〜 目的のものができればいいんで結構適当なんですよw でも今回のツール作成でデリゲートとか色々つかえるようになったお^^ >>286 さ、さーせんww 連投しすぎたからあとは結果だけを、 サバが開くのは水曜なので参考までにいちおう載せさせて頂きます〜 忘れてたらゴメン
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
293 :デフォルトの名無しさん[sage]:2015/04/27(月) 22:46:23.46 ID:3IxpbeeH - たぶんファナが寄与度高いから先物上げたんだと思う
|
- C#, C♯, C#相談室 Part87 [転載禁止]©2ch.net
294 :デフォルトの名無しさん[sage]:2015/04/27(月) 22:47:19.17 ID:3IxpbeeH - gb
|