トップページ⇒tech
1001コメント361KB

VB.NET質問スレ (Part24)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/12/13(木) 10:03:48
前スレ

VB.NET質問スレ
http://pc11.2ch.net/test/read.cgi/tech/1189038267/
(Partがありませんが、23です。)
テンプレは2〜5くらいまでの間にある予定
0153デフォルトの名無しさん2007/12/24(月) 18:52:22
確認するには必要だがな。
しかし、素数計算なんて明らかにCPUオンリーとしか思えない処理では
そんなことを持ち出すまでもなく
シングルコアのマルチスレッドで性能が向上する訳がない。
少なくともマルチコアと比較になるレベルではあり得ない。
そんなの書くまでもなく明らかだと思うが。
0154デフォルトの名無しさん2007/12/24(月) 18:54:23
鶏頭とかどうでもいいが、なんでそんなにマルチコアでの性能向上を否定してるの?
ああ、否定してたやつと別人ならすまんな。
0155デフォルトの名無しさん2007/12/24(月) 18:56:39
>>153
なんかもう病的に馬鹿だなw
だれもそんなこと言ってないってw
0156デフォルトの名無しさん2007/12/24(月) 19:00:39
>>154
あんたはあんたで馬鹿だなw
決して難しくない日本語で簡潔に書いてるんだからちゃんと理解しろよ。
今問題にしてるのは、

・マルチコア環境においては、
・シングルコア環境比で、
・マルチスレッドのコードの実行効率が高いのか

だよ。
そりゃ一般的には最新のマルチコアのCPUは旧世代のCPUより処理能力が高いに決まってるジャンw
誰もそんな話はしてないんだよ。
0157デフォルトの名無しさん2007/12/24(月) 19:04:35
で、それが高くならないと主張してるのか?
0158デフォルトの名無しさん2007/12/24(月) 19:05:52
>>148
ありがとう、これでおいらもVBユーザーに仲間入りする気になったよ。
0159デフォルトの名無しさん2007/12/24(月) 19:07:12
そう、そういうこと。
きっちり実証したわけじゃないけど、高くなるとしたらそのメカニズムがよくわからないよ。
0160デフォルトの名無しさん2007/12/24(月) 19:10:04
>>156
後ろの文が意味分からん。
マルチコアでマルチスレッドでの処理能力が向上するのは
なんていうか、当たり前すぎるっていうか、最初からそれも目的にした技術なんだから。
改めて実験するまでもなく、実証例はいくらでもあるだろ?
0161デフォルトの名無しさん2007/12/24(月) 19:10:50
>>159本気?
0162デフォルトの名無しさん2007/12/24(月) 19:11:51
ひょっとしてほんとに>>151で考えてるの?
0163デフォルトの名無しさん2007/12/24(月) 19:15:24
よく分からんな、マルチスレッドの処理なら
マルチコア上では複数スレッドが本当に同時に処理できるんだから
トータルの処理能力が向上するのは当たり前としか。

どこに疑問を感じてるんだ??
0164デフォルトの名無しさん2007/12/24(月) 19:17:13
>>160
解説記事はたことあるけど実証例は見たことないな。
その解説とやらも、>>132式の、書いてる奴がマルチタスクのしくみを
根本的にわかってないとしか思えないようなのばっかり
0165デフォルトの名無しさん2007/12/24(月) 19:18:53
>>163
だからそれが素朴すぎるって言うんだよw
コアがスレッドに専属するようなモデルを無意識で想定してるんだろうけど
そんなモデルは全然間違ってるよ。
0166デフォルトの名無しさん2007/12/24(月) 19:27:58
だからさ、コアがスレッドに直結してないにしても、
ある瞬間ではおおよそそうなってるだろうがよ。
だから大枠ではそうなってるってわざわざ書いたのに。

お前はスレッドとコアが直結してないからって、
いきなりマルチコアでも性能は向上しないって結論付けてるのか?

直結してないからって複数スレッドが同時に実行されないってことにはならんだろ?
0167デフォルトの名無しさん2007/12/24(月) 19:32:38
>>166
物事をゼロから考える訓練が出来てない人なのかなあ。。
なにか「同時」ということに意味があるように思ってるようだが、
物理的に同時だったら効率が上がるの?何故?

結論から言えばそんなことはないんだよ。
最初から言ってるように、コンテクストの切り替えによるロスを減らせるかどうか、
それだけが問題なの。

そんなの大して(もちろんゼロではない)減るわけないじゃん。
コアが二倍や四倍になった程度で。
0168デフォルトの名無しさん2007/12/24(月) 19:33:54
HyperThreadingと混同しているように見える
0169デフォルトの名無しさん2007/12/24(月) 19:35:34
OS上でCPUを必要としてるスレッドがあれば、
OSは優先度に従ってスレッドにCPUを割り当てる。
複数スレッドがあれば基本的にはそれぞれに空いてるCPUを割り当てる。
マルチコアでは割り当てられるプロセッサが複数あるから
複数スレッドがあれば基本的には複数スレッドがそれぞれのコアで
同時に実行される。
スレッドへのCPUの割り当ては短時間で何度も切り替えられるが、
全体の時間で見たら、ほぼコア数のスレッドが同時処理される。
そういうコードになってたら、だが。

これ以上何が気に入らん?
0170デフォルトの名無しさん2007/12/24(月) 19:43:19
なんかひとつのスレッドの処理速度が上がるわけないって意味で書いてるみたいだな。
んなのは当たり前だが、マルチコアとマルチスレッドの話で
そんな話をしだすとは予想外すぎて分からんよ。
っていうか、そんなことは分かってる前提で、全体の処理能力を向上させりために
マルチスレッドを使うって話なのは、もう最初から大前提だろ。

まあそういう話だと受け取っても、マルチスレッド化で処理時間が半分ってのが
納得いかないってはっきり言ってるから、そもそもなにも分かってない気がするが。
0171デフォルトの名無しさん2007/12/24(月) 19:54:42
8コアぐらいあれば、ThreadAffinityを設定すれば専属コアにならね?w
0172デフォルトの名無しさん2007/12/24(月) 19:55:26
>>167は何が言いたいのかな…
なんでコンテキスト切り替えだけが問題って話になってんだ?
コンテキスト切り替えの効率が重要なのは分かるが、
複数スレッドが同時に処理できるってことが最重要じゃないのどう考えても。

シングルコアじゃひとつのスレッドしか物理的に同時実行できない。
マルチコアならコア数分同時実行できる。
複数スレッドのコードならコア数分のスレッドはコンテキスト切り替えなしで実行出来るし
同時実行してるんだからこなしてる処理量もコア数倍になってる。
まあこれは理想的な場合だが、大枠ではこうだ。
一体これ以上何が疑問なんだ。
0173デフォルトの名無しさん2007/12/24(月) 19:57:03
専属コアじゃなくて、コア専属かなあどっちかっていうとw
0174デフォルトの名無しさん2007/12/24(月) 20:02:19
どなたか>>110の質問、よろしくお願いいたします。

ちょっと上のでは曖昧すぎるかもしれませんので細かく言うと、
VB上でWindowsのショートカットコマンド、CTRL+AやCTRL+Cを使うにはどうすればいいのでしょうか?
0175デフォルトの名無しさん2007/12/24(月) 20:06:53
>>174
sendkeys使えばいいじゃん。
それで満足できないならWin32APIで。
0176デフォルトの名無しさん2007/12/24(月) 20:10:55
なんか最近他人をさんざん馬鹿扱いしてだんだん馬鹿としか書かなくなって
そのまま消えてしまう奴をよく見るようになった気がする…
0177デフォルトの名無しさん2007/12/24(月) 20:16:01
>>175
それでいけるんですか・・・キー単体しか認識しないものだと思ってましたorz
0178デフォルトの名無しさん2007/12/24(月) 20:34:59
結局何だったんですか?
0179デフォルトの名無しさん2007/12/24(月) 20:47:17
クリスマスだというのにお前らはこんなスレに齧りついて、と言う涙なしでは語れない話
0180デフォルトの名無しさん2007/12/24(月) 21:51:21
このあと秋葉原から生中継
0181デフォルトの名無しさん2007/12/24(月) 23:44:37
>>149
そのトップに出てくる本、糞だったなぁ。
2002のコードを2005にアップグレードしただけだったし。
0182デフォルトの名無しさん2007/12/24(月) 23:46:28
前前スレのTry-Catch論争と同じ臭いがするぞ、ここはw
0183デフォルトの名無しさん2007/12/25(火) 00:10:54
最近、最初に、

こんな奴がプログラム云々
頭悪いみたいだね云々
知能が低い云々
鶏頭云々
病的云々
馬鹿云々

こういうこと書く奴がアホだったっつう
マンガみたいな展開大杉
0184デフォルトの名無しさん2007/12/25(火) 00:38:53
>>183
自分の言葉を自分に適用できない。
これ馬鹿の顕著な特徴だから徹底的に頭に叩き込んだ方がいいよ。
まあそれができないから「馬鹿」なんだろうけどさw
0185デフォルトの名無しさん2007/12/25(火) 00:48:37
というか、馬鹿と呼ばれて頭にくるのはまあいいとして、
しかし、じゃあそう呼ばれた人間は実際馬鹿なこと言ってないのかよ。
それも繰り返し注意を促された後で
0186デフォルトの名無しさん2007/12/25(火) 02:27:30
だれ?
0187デフォルトの名無しさん2007/12/25(火) 02:36:06
>>126
>>129
>>132
>>138
>>143
>>152
>>155
>>156
0188デフォルトの名無しさん2007/12/25(火) 02:36:33
>>159
>>164
>>165
>>167
>>184
>>185
ってことでおk?
0189デフォルトの名無しさん2007/12/25(火) 02:40:31
いわれたやつがどうこうとか関係なく
言ってるやつがアホだったっことには変わりないな。
0190デフォルトの名無しさん2007/12/25(火) 02:46:28
結局>>126は正しいの?間違ってるの?
0191デフォルトの名無しさん2007/12/25(火) 08:37:06
基本的にスレッドはソフトウェアレベルの話で,コア数はハードウェアレベルの(上層の)話.
リソースの競合とかデッドロックとかマルチタスク処理によるコンテキストの切り替えとかアトミック操作とか,
実行時には様々な障害が発生するので,その辺をOSが色々やってくれる.

そんなわけで単純に「2つ処理するハードウェアつけたら2倍になるぉ(^ω^」なんて誰にもいえなくて,
そんなこと言ってたらそれはバカ丸出し.

OSを解さないで,自力でソフトウェアをチューニングしてやっとかそこそこハードウェアの性能を引き出せるわけだから,
安っちぃコンパイラで(しかも仮想マシン)吐き出したコードを実行して,シングルコアとマルチコアでユーザが体感できるような性能差が出たらラッキーくらい.

それよかハードディスクの性能をよくするとか,マウスの精度を上げるとか,描画を早くするとかに専念した方がいいじゃろな.
アプリケーションプログラマからすると.
0192デフォルトの名無しさん2007/12/25(火) 08:43:46
>>190
間違ってるよ
0193デフォルトの名無しさん2007/12/25(火) 08:58:07
>>191
こいつ恣意的に話しずらしてるよな明らかに。
笑わすなっつの。
無条件に2倍になるとか、だれもそんなこと言ってないし。
0194デフォルトの名無しさん2007/12/25(火) 08:58:43
>OSを解さないで,自力でソフトウェアをチューニングしてやっとかそこそこハードウェアの性能を引き出せるわけだから,
>安っちぃコンパイラで(しかも仮想マシン)吐き出したコードを実行して,シングルコアとマルチコアでユーザが体感できるような性能差が出たらラッキーくらい.

あふぉか。
0195デフォルトの名無しさん2007/12/25(火) 09:01:26
>>191お前ほんとは何もわかってないだろ。
文章の節々から怪しさがにじみ出てるぞ。

0196デフォルトの名無しさん2007/12/25(火) 09:05:01
これ以上議論するならコテかトリップつけてくれw
わかりにくいったらありゃしない。
0197デフォルトの名無しさん2007/12/25(火) 09:13:32
>>158
これからプログラミングやるならVB.NETからやるのはやめとけ
.NETならVC#、ネイティブならVC++を勧める
0198デフォルトの名無しさん2007/12/25(火) 09:23:45
>>191なので、
マルチコアマシンでも、マルチスレッド化してもパフォーマンスはアップしません。
アップする理由がありません。
アップしてる記事とかあるけど、何にも理解してないやつがでたらめ書いてるんだよ。

って言いたかったってことでおk?
0199デフォルトの名無しさん2007/12/25(火) 09:37:33
違うでしょ
0200デフォルトの名無しさん2007/12/25(火) 09:43:26
>>159
>>164
0201デフォルトの名無しさん2007/12/25(火) 10:55:02
結局マルチスレッドでもマルチコアの性能を引き出すことはできないって言ってるの?
それとも話をずらして誤魔化してるだけなの?
0202デフォルトの名無しさん2007/12/25(火) 11:01:01
いいえ
いいえ
0203デフォルトの名無しさん2007/12/25(火) 11:07:36
結局何だったの?

ところでパラレルライブラリっていつ出るの?
0204デフォルトの名無しさん2007/12/25(火) 12:44:22
DataGridViewで変更のあった行はRowStateを見ればわかるけど
変更のあった列はどうやって取得するのでしょうか
0205デフォルトの名無しさん2007/12/25(火) 13:20:22
こんな日になんですが、よろしければお付き合いください。

現在、Office2007のアドインをVB2008で開発しようとしています。
実装したい機能としては、従来のメニュバーと、削除されてしまった「スキャナまたはカメラから」の図の挿入です。
メニューバーのほうは方法がわかり、めどが立ったのですが、「スキャナまたはカメラから」のほうが難航しています。

この機能自体はクリップオーガナイザ(MSTORE.exe)に実装されているので、
・そのダイアログをWord、PowerPointなどのOfficeアプリケーションから一発で呼び出す
・実行結果をオーガナイザのコレクションに追加して、そのファイルをOffice側に張り付ける
ということができれば理想的です。
このようなことは可能でしょうか?
VSTOのドキュメントとは格闘したのですが、Officeアプリケーション自体からこの機能がなくなっているせいか、2007では実装方法がわかりませんでした。
0206デフォルトの名無しさん2007/12/25(火) 13:27:01
XMLの要素や属性を読みに行く際、LINQ to XMLで読み込んでから型変換するのと、XmlReaderで型指定して読み込むのとではどちらのパフォーマンスが良いでしょうか。
0207デフォルトの名無しさん2007/12/25(火) 15:09:15
>>203
Win32API使って自分でやった方が早くね?
0208デフォルトの名無しさん2007/12/25(火) 15:25:05

 可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
0209デフォルトの名無しさん2007/12/25(火) 15:31:39
質問させてください。
現在、Labelコントロールを継承したコントロールを作成しています。
その継承コントロールにて、AutoSizeプロパティをインスタンス生成時にFalseにするようにしているのですが、
フォームに貼り付けた時点でAutoSize=trueがフォームのInitializeComponentメソッドに自動的に書かれてしまい、意味がありませんでした。
デフォルトでAutoSize=falseにしたい場合は、どのようにすればよろしいでしょうか?
どなたかご教示宜しくお願いします。
02102092007/12/25(火) 15:56:35
調べてみたところ、LabelはデフォルトでAutoSize=Falseなんですね。
要はInitializeComponentでAutoSize=Trueが自動で書かれてしまわないようにできれば…
無理でしょうか(´・ω・`)
0211デフォルトの名無しさん2007/12/25(火) 16:30:34

可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
0212デフォルトの名無しさん2007/12/25(火) 16:30:43

可愛そうなPG諸君 君たちに未来はないのだよ 職種変えなさい (マジ
0213デフォルトの名無しさん2007/12/25(火) 17:51:33
>>209
フォームデザイナで「継承したクラスのAutoSizeプロパティ」がTrueになっているんでないかな?
0214デフォルトの名無しさん2007/12/25(火) 19:05:32
>>209
あるあるw
とりあえずこれで解決できるみたいだよ。
完全に問題がないかどうかは確認してないが

Public Class LabelEx
  Inherits Label

  <DefaultValue(False)> _
  Public Overrides Property AutoSize() As Boolean
    Get
      Return MyBase.AutoSize
    End Get
    Set(ByVal value As Boolean)
      Static is1st As Boolean = True

      If DesignMode AndAlso is1st Then
        MyBase.AutoSize = False
        is1st = False
      Else
        MyBase.AutoSize = value
      End If
    End Set
  End Property
End Class

0215デフォルトの名無しさん2007/12/25(火) 22:57:53
>>204
それを知ってどうしたいんだ?
0216デフォルトの名無しさん2007/12/25(火) 23:04:20
>>215
お前こそそれ知ってどうしたいんだよ。
しかし、なんで馬鹿ってえのはこう自分を棚上げして平気なんざんしょうかw
0217デフォルトの名無しさん2007/12/25(火) 23:13:25
*Data*Gridで行に対しての処理は当たり前だけど、
列、ってのは想像が付かないからなー。
 なんつーか、特異な要求の理由が知りたいってところ?
0218デフォルトの名無しさん2007/12/25(火) 23:16:30
>>216
自分のことをよくぞ言ったもんだ
215じゃねーけど知ったところで意味ねーからだろーが
その変更された値を取得するには結局変更された行(=レコード)を取得しなきゃならんのだし
02192092007/12/26(水) 10:17:17
>>214
できました(`・ω・´)!
強引な感はありますが、強引な方法でしか解決できそうにないですしねw
今のところ問題はないです。
0220デフォルトの名無しさん2007/12/26(水) 13:04:04
すいません、わからないことができてしまったので質問です。
使用ソフトVB2005です。

わからないことは
テキストボックスで入力した文字をボタン1を押すとtxtファイルに保存して、
ボタン2を押すとテキストボックスに呼び出すこと。(テキストボックスは複数)

StremReder、StremWriterを使うことはわかって、保存まではたどり着きました。
ですが、呼び出しがわかりません。
どなたか、教えてもらえませんか?
0221デフォルトの名無しさん2007/12/26(水) 13:11:52
呼び出すってのは、テキストファイルの内容をテキストボックスに表示するってことかな?
http://dobon.net/vb/dotnet/file/readfile.html
この辺読んだらわかるかと。
上記URLのVBサンプルの
Console.WriteLine(s)
てなっているところを例えば
TextBox1.text = s
ってすればTextBox1にファイルの内容が表示されるよ。
0222デフォルトの名無しさん2007/12/26(水) 13:43:34
>>221
どうもありがとうございます。
確かにできました。
ですが、1行で保存しているものを分割して表示しなければ
いけないので、すべてまとまって出てしまいます。
これは、どうすればいいかわかる方いましたら教えてください。
0223デフォルトの名無しさん2007/12/26(水) 13:52:14
>>222
それは一行に全てまとめて保存していて,そのまま表示したってことでおk?

適当に分割すれば
0224デフォルトの名無しさん2007/12/26(水) 13:58:18
>>223
分割・・・それもアリですが
こんな感じになって保存されてるのをtextboxに分けて入れたいんですよ。
a,s,df(textbox1.text,textbox2.text,textbox3.textという感じに保存)

分割可能でしょうか?  ,は表示されません
0225デフォルトの名無しさん2007/12/26(水) 14:08:11
>>224
「感じ」だけ言われてもなぁ

じゃあ
a,s,df(textbox1.txt, textbox2.txt, textbox3.txt という感じに分割)
すればいい
0226デフォルトの名無しさん2007/12/26(水) 14:10:45
クリンゴン語でおk
0227デフォルトの名無しさん2007/12/26(水) 14:20:01
>>225
わかりにくく書いて御免
訂正する

保存ボタンを押すとTextBox(複数)の内容を保存する
Dim abc As String
abc &= TextBox1.Text
abc &= ","
abc &= TextBox2.Text
abc &= ","
abc &= Textbox3.Text

保存すると
日本,中国,ロシア

これをTextBoxに戻すことをしたい
どうもすいません
0228デフォルトの名無しさん2007/12/26(水) 14:22:46
splitで分割しろ
0229デフォルトの名無しさん2007/12/26(水) 14:32:29
お!でけた。
ありがとう!
0230デフォルトの名無しさん2007/12/26(水) 14:42:35
解決したから良かったけど、なんでこう目標だけを質問するのかねw

こういう<前提>で処理をしており、次にこういう<手段>で<目標>したいです。
どうやったら<手段>はできますか?

とか聞いてくれれば答えやすいのに。
0231デフォルトの名無しさん2007/12/26(水) 15:04:15
おお!できた
おまいらありがとう
0232デフォルトの名無しさん2007/12/26(水) 15:46:13
そこまで説明できたら自分で解決出来そうだけどな。
0233デフォルトの名無しさん2007/12/26(水) 16:02:26
ちょっと教えて
ストリングビルダってどういう時に使うのがいいん?
SQL組み立てる時にはいいんだろうけど、それ以外の用途ってあまり思い浮かばない
何よりindexofが無いのが致命的
結局ストリングの代わりに使えるようなもんじゃ無いってこと?
0234デフォルトの名無しさん2007/12/26(水) 16:06:39
>>232
自分で解決できるのが一番だ。
>>230みたいに考えて、それでも解からないなら質問すればいい。
思考ゼロで質問丸投げしてくるやつは成長しないぞ。
0235デフォルトの名無しさん2007/12/26(水) 16:13:28
>>233
どぼんより引用
Stringクラスではなく、System.Text.StringBuilderクラスを使うことにより、文字列の置換や追加などの
処理をより高速に行うことができます。
例えば、Stringクラスで文字列の連結を行うと、文字列を連結するたびに新しいインスタンスを
作成するため、パフォーマンスが落ちますが、StringBuilderクラスでは、そのようなことがありません。
文字列の置換や追加などの処理を頻繁に行う時は、StringBuilderクラスを使うとよいでしょう。

逆に言えば文字列の置換や追加などの処理を頻繁に行わない時は、意識して使うこともないってこった。
0236デフォルトの名無しさん2007/12/26(水) 16:16:06
>>233
100万回くらい文字列の連結をするループ作って
StringとStringBuilderを比較してみるといい
0237デフォルトの名無しさん2007/12/26(水) 16:19:25
100万回てwww
メモリたらんわwwww
0238デフォルトの名無しさん2007/12/26(水) 16:39:03
>>235
その程度のもんなんだね
THX
いやまあそんなに違うもんなら、今までに書いたの全部書き直さなきゃいかんかと思て
0239デフォルトの名無しさん2007/12/26(水) 17:09:39
何を読んでそんなに違うものだと思ったの?
いや素朴な疑問。
0240デフォルトの名無しさん2007/12/26(水) 17:26:27
100回程度で違いが出たら根本的なところで問題あるだろ絶対。
0241デフォルトの名無しさん2007/12/26(水) 18:41:22
>>237
100万=1M

10文字くらいの連結なら最近のPCならなんら問題ない
0242デフォルトの名無しさん2007/12/26(水) 20:31:57
UTF16だから×2
コピー時に両方いるから×1.5
最悪必要量の2倍確保されるから最悪の場合は×2
よって最悪6倍
ああもちろんこれは1文字ずつ足した場合だから
さらに足していく文字数倍なw
0243デフォルトの名無しさん2007/12/26(水) 20:35:40
ああそれでも最悪60M位だな。
過渡的に使うメモリはトータルでさらに倍か、それでもまあ120Mくらいか。
0244デフォルトの名無しさん2007/12/26(水) 20:37:03
違うわ、トータルはそれ×100万だたw
0245デフォルトの名無しさん2007/12/26(水) 20:38:10
違うw半分の100万ばいだから
30M×100万だ
0246デフォルトの名無しさん2007/12/26(水) 20:40:08
最悪の場合は2倍じゃなくて1.5倍かな?俺ってあほだ
0247デフォルトの名無しさん2007/12/26(水) 20:42:36
チラシの裏にでも書いてろ
0248デフォルトの名無しさん2007/12/26(水) 21:09:27
ガベコレのことを忘れてはいけませんよ
0249デフォルトの名無しさん2007/12/26(水) 21:14:03
誰も忘れてないと思うよ
0250デフォルトの名無しさん2007/12/26(水) 21:19:12
単なる連結なんだから
100万回×1000万文字×2バイト÷2で
1000万Mだな、過渡的なものを含めたトータルで。
10Tか。
メモリ帯域ってどんくらいだっけ?
0251デフォルトの名無しさん2007/12/26(水) 21:20:55
まあ1時間もあれば終わるんじゃない?知らんけどw
0252デフォルトの名無しさん2007/12/26(水) 21:22:04
やってみるわ
aを100万回連結してみる
■ このスレッドは過去ログ倉庫に格納されています