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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/03/06(水) 12:28:23.07
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part102
http://toro.2ch.net/test/read.cgi/tech/1360231775/

関連スレ
C#, C♯, C#相談室 Part78
http://toro.2ch.net/test/read.cgi/tech/1356268827/

コード貼るなら↓使ってください
http://ideone.com/
0412デフォルトの名無しさん2013/03/23(土) 00:17:59.88
ただ、同じコストかっていうのは激しく疑問だ
0413デフォルトの名無しさん2013/03/23(土) 00:19:40.11
>>410
解像度あげまくって実際6ビットしかないのに疑似フルカラーで8ビットってのは最近のスマホでよくある方法だわな
0414デフォルトの名無しさん2013/03/23(土) 00:23:47.89
最近のスマホはディザで色分解能を上げてるわけじゃないと思うけど、
そういう手法なら30年以上前からある
0415デフォルトの名無しさん2013/03/23(土) 00:26:04.30
PAINT文でパターン指定して中間色を出すみたいな
0416デフォルトの名無しさん2013/03/23(土) 00:26:12.71
>>411
おれの本業はまさにそれだが、マンモなどの医療用は4kを越える高解像度、かつ12ビット以上だからぶっちゃけC#ではループが遅くて厳しい。
大枠のUIはC#で書いてるけど細部はCとアセンブラで書いてP/Invoke。
0417デフォルトの名無しさん2013/03/23(土) 00:27:21.28
>>416
unsafe使っても厳しいか
そりゃまそうだろうなあ
0418デフォルトの名無しさん2013/03/23(土) 00:29:33.25
まさにそれが意図した使い方だと思うけど
ピュアC#なんてC#しか使えない奴のハンデ戦みたいなもん
0419デフォルトの名無しさん2013/03/23(土) 00:29:58.94
そういう用途ではLinqは遅いよ。
0420デフォルトの名無しさん2013/03/23(土) 00:53:10.00
ただでさえ画像処理速度糞なのにDeepColorとかまともに動くのかよ
0421デフォルトの名無しさん2013/03/23(土) 01:09:56.82
遅くはないだろ。unsafe使えませんってレベルか?
0422デフォルトの名無しさん2013/03/23(土) 02:44:38.00
unsafeで処理する以前の段階が糞なんだよ
経験の浅い素人は恥ずかしいから黙ってたほうが良いよ
0423デフォルトの名無しさん2013/03/23(土) 02:49:24.22
経験が深い人ならせめてデコードっていえよ
0424デフォルトの名無しさん2013/03/23(土) 04:53:27.73
表示の話してるのにunsafeとか無能丸出し
0425デフォルトの名無しさん2013/03/23(土) 04:54:56.17
60fps出るのに遅い?

スキルに問題ありだね。
0426デフォルトの名無しさん2013/03/23(土) 04:57:23.85
unsafeで出来る処理の範囲なんて限られてるのに
やったこともないのに馬鹿の一つ覚えで言ってるんだな
0427デフォルトの名無しさん2013/03/23(土) 05:00:28.71
>>425
アイコンサイズですか?www
フォーマットやサイズ、同じフォーマットでも作成された環境でピンきりなのに60fps出るのに(キリッ とか馬鹿丸出しですよ
0428デフォルトの名無しさん2013/03/23(土) 05:06:25.76
>>427
おまえしか知らない仕様を次から次へと後出しされてもな。無能SEですか。

何をどうやろうとして糞なのか先に全部書け。
0429デフォルトの名無しさん2013/03/23(土) 05:11:25.35
>>428
>60fps出るのに遅い?(キリッ
おまえしか知らない仕様で語られてもね(w
0430デフォルトの名無しさん2013/03/23(土) 05:14:12.72
馬鹿は見苦しいから黙ってろよ
0431デフォルトの名無しさん2013/03/23(土) 05:49:38.62
目糞鼻糞w
0432デフォルトの名無しさん2013/03/23(土) 05:55:49.65
xboxがc#なのに遅いはないわw
0433デフォルトの名無しさん2013/03/23(土) 07:19:41.43
ToolStripContainer上にToolStripを縦に2列置いた初期状態から
ToolStrip1とToolStrip2を横に並べて1行にした場合や再度2列に戻したりした場合に
ToolStripContainerの高さが自動で1列や2列になるようにするにはどうすればよいでしょうか?
0434デフォルトの名無しさん2013/03/23(土) 08:24:24.21
>>417-432
XboxのC#はよく知らんがBitBltのような物で単に転送しているだけだろ?

↓のような巨大ループで1フレームで60fpsを維持できるかって話だ。
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
//加工
}
}

>>416の用途は事前に用意してある画像を単に表示するだけではなく、リアルタイムで加工しながら表示するというものだ。
これMac/Objective-Cで作ってある物だが元データは1つでそこから操作に応じてリアルタイムに切り出して表示している。
http://www.youtube.com/watch?v=PRHQFiymQKs
http://www.youtube.com/watch?v=kor1-ohgiW0
0435デフォルトの名無しさん2013/03/23(土) 08:31:57.84
こんなループをC/C++並に高速化できるか?
unsafe使ったところでfor文は速くならんだろ?
代案あるか?

for (p = 0; p < 4; p++) {
for (y = 0; y < 2048; y++) {
for (x = 0; x < 4096; x++) {
z++;
}
}
}
0436デフォルトの名無しさん2013/03/23(土) 08:43:58.76
Cの関数を呼ぶ
0437デフォルトの名無しさん2013/03/23(土) 09:29:35.14
全部ループで回す原始的な方法を止める
0438デフォルトの名無しさん2013/03/23(土) 09:30:32.32
C#って遅いの?
0439デフォルトの名無しさん2013/03/23(土) 09:32:08.25
宇宙からみたら超速いよ
0440デフォルトの名無しさん2013/03/23(土) 09:34:01.36
>>434-435
http://davidthomasbernal.com/blog/2008/03/13/c-image-processing-performance-unsafe-vs-safe-code-part-i/
http://davidthomasbernal.com/blog/2008/03/14/c-image-processing-performance-unsafe-vs-safe-code-part-ii/
https://github.com/dtb/CSharp-Image-Processing-Sample
unsafe      194           0
IntPtr       262          35%
GetPixel  238,299 (~4 min.) 122,734%

これで1桁msが出るようになればいいんだろ?
簡単じゃんwww
0441デフォルトの名無しさん2013/03/23(土) 09:35:55.15
>>434
なにこれ凄い
Objective-Cも大概なくらい遅いがこのくらいはできるもんなのか
0442デフォルトの名無しさん2013/03/23(土) 09:37:18.46
単純なループがC#がCより遅いとかあるの?
0443デフォルトの名無しさん2013/03/23(土) 09:37:44.17
C#はObjective-Cの足下にも及ばないってことだよ
時間の無駄なのでC#なんてやめてObjective-Cを覚えなさい
0444デフォルトの名無しさん2013/03/23(土) 09:54:38.01
ループの内側に計算式があるだろうしどう頑張っても遅いんじゃね?
0445デフォルトの名無しさん2013/03/23(土) 09:59:09.17
並列化すればok
0446デフォルトの名無しさん2013/03/23(土) 09:59:22.34
GPUでやれ
0447デフォルトの名無しさん2013/03/23(土) 09:59:37.70
C#の浮動小数点は遅いからな
https://github.com/dtb/CSharp-Image-Processing-Sample/blob/master/ImageProcessor/Process.cs
0448デフォルトの名無しさん2013/03/23(土) 10:07:31.52
C#を極めて無いから遅いだけじゃないの?
0449デフォルトの名無しさん2013/03/23(土) 10:15:27.02
C#が遅いつってもせいぜいCの2倍程度でしょ
0450デフォルトの名無しさん2013/03/23(土) 10:17:11.73
C#が遅いのってフォームだけじゃないの?計算が遅いとかありえるの?
0451デフォルトの名無しさん2013/03/23(土) 10:21:09.30
無いよ
今はJITでCとの誤差1%以内になる
0452デフォルトの名無しさん2013/03/23(土) 10:22:53.03
浮動小数点はクソマジメにIEEE仕様に準拠している関係で100倍くらい遅い
0453デフォルトの名無しさん2013/03/23(土) 10:25:28.93
>>446
それC#とは別のCモドキ言語や
0454デフォルトの名無しさん2013/03/23(土) 10:26:40.76
どうせGPUでやるんだからホスト言語はどうでもいいってことだろ
0455デフォルトの名無しさん2013/03/23(土) 10:28:33.31
今時CPUで画像処理をやって遅いとかただのアホ、てことです
0456デフォルトの名無しさん2013/03/23(土) 10:31:07.19
C#は基本的にGPUを使うようになってないから
0457デフォルトの名無しさん2013/03/23(土) 10:31:26.94
60fpsって1フレーム16msで処理しないといけないし、他の雑処理を抜いても
>>440>>447の194msを16ms以内まで高速化とかC#だけでは無理だろ。
0458デフォルトの名無しさん2013/03/23(土) 10:34:30.67
Cでも無理
0459デフォルトの名無しさん2013/03/23(土) 10:34:56.59
そもそもWPFでGPGPUなんて出来るのか?
0460デフォルトの名無しさん2013/03/23(土) 10:38:51.19
Cでは10年前の低スペックPCですら出来ているよ
SIMD使ったりはしているけどね
0461デフォルトの名無しさん2013/03/23(土) 10:39:50.84
だからそれをC#でも使えばいい
0462デフォルトの名無しさん2013/03/23(土) 10:40:25.11
なんでWPFなんだよw
SharpDXでも使ってDirectCompute呼ぶとか
軽くラッパー書いて普通にC++経由でCUDA使えばいいだけ
0463デフォルトの名無しさん2013/03/23(土) 10:45:43.60
グダグダ言ってないで話まとめろよ
何使えばできるとかお前らわかってるんだろ?
0464デフォルトの名無しさん2013/03/23(土) 10:45:45.71
えー
C#だけでCに負けたくないんだけど
0465デフォルトの名無しさん2013/03/23(土) 10:48:51.15
>>464
そもそもC#だけじゃ何も作れない。IOすらできない。
0466デフォルトの名無しさん2013/03/23(土) 10:50:03.71
GPUだのマルチスレッドだのは枯れた技術の最適化手法であって研究段階の進化を続けているモノに適用するのは
実行速度のために進化速度を犠牲にする真正の馬鹿がやる行為。
0467デフォルトの名無しさん2013/03/23(土) 10:52:15.00
  .ni 7      /ノ   ヽ\   壁に向かってしゃべってろゴミ
l^l | | l ,/)   / /゚ヽ  /゚ヾ\      .n
', U ! レ' / /   ⌒   ⌒  \   l^l.| | /)
/    〈 |  (____人__)  |   | U レ'//)
     ヽ\    |lr┬-l|   /  ノ    /
 /´ ̄ ̄ノ    ゙=ニ二"   \rニ     |
0468デフォルトの名無しさん2013/03/23(土) 10:52:18.00
GPUはともかくマルチスレッドなんか楽勝でできるだろw
シングルスレッドで画像処理が速いだの遅いだのそれこそアホかと
C#で簡単なのはもちろん、C++でもOpenMP使えば楽勝だわ
0469デフォルトの名無しさん2013/03/23(土) 10:52:48.45
>>462
この話の発端は「WPFでディープカラーを扱えるか?」だ。
扱えるくさいけど遅くて使い物にならないんじゃね?ってことでここまで話が伸びている
0470デフォルトの名無しさん2013/03/23(土) 10:54:53.29
>>469
いやいろいろ難しい計算してその画像を生成するときの話でしょ?
特にそこをWPFで書かなきゃいけない必然性はない
0471デフォルトの名無しさん2013/03/23(土) 10:59:00.55
16ms以内という要件だとスレッドを呼び出すコストが大きすぎてマルチスレッドは無理だろ
0472デフォルトの名無しさん2013/03/23(土) 10:59:52.15
表示がWPFならShaderEffectで何とかするのが最善じゃないかな
0473デフォルトの名無しさん2013/03/23(土) 11:02:14.65
ファイル→Image(Bitmap) が遅いんだからどうあがいても無駄
0474デフォルトの名無しさん2013/03/23(土) 11:02:55.82
>>470
上の方のレスを見ればわかるがUIの多DPI対応のために生DirectXからWPFに移植できるかという話だ。
0475デフォルトの名無しさん2013/03/23(土) 11:05:37.68
お前ら共通の話題を話し合ってるのかと思ってたら
思い思いの独り言を言ってただけなんだな
0476デフォルトの名無しさん2013/03/23(土) 11:05:55.16
new Bitmap の間にネイティブなら表示まで終わってる
C#は糞
0477デフォルトの名無しさん2013/03/23(土) 11:07:18.75
>>475
便所の落書きで何言ってんだ
0478デフォルトの名無しさん2013/03/23(土) 11:09:28.18
スレッドプールなら0msだよ
0479デフォルトの名無しさん2013/03/23(土) 11:13:11.43
お前ら妄想だけでいってるだけなんだな
0480デフォルトの名無しさん2013/03/23(土) 11:14:07.61
おい口だけ野郎ども、これforkして作って見せろよwwwwwwwwwww
https://github.com/dtb/CSharp-Image-Processing-Sample
0481デフォルトの名無しさん2013/03/23(土) 11:18:25.66
何を?
0482デフォルトの名無しさん2013/03/23(土) 11:26:09.89
>>478
スレッドプールに変数渡している間にネイティブなら表示まで終わってる
C#は糞
0483デフォルトの名無しさん2013/03/23(土) 11:26:50.49
>>480のどこに何度も貼る価値があるのか
せめて閾値の算出部分も組めよ
0484デフォルトの名無しさん2013/03/23(土) 11:33:28.28
プールできる量なんてたかが知れてるし
0485デフォルトの名無しさん2013/03/23(土) 11:35:49.18
使う画像が決まっててかつ少量でなければプールなんて無駄糞
0486デフォルトの名無しさん2013/03/23(土) 11:36:39.26
お前ら妄想で言ってるだけなんだな
0487デフォルトの名無しさん2013/03/23(土) 11:37:05.26
めんどくさくなってきたからsurfaceでも買ってくる
0488デフォルトの名無しさん2013/03/23(土) 11:46:48.64
お前ら勉強がてら実用性無視でOpenCVをC#だけで書き直してみようぜ
0489デフォルトの名無しさん2013/03/23(土) 11:54:42.08
休みの日まで勉強してたら脳みそ腐るわ
0490デフォルトの名無しさん2013/03/23(土) 11:57:46.80
githubかbitbucketにリポジトリ掘れば手伝うぞ
他はアカウントないし作るのもメンドイ
0491デフォルトの名無しさん2013/03/23(土) 12:22:41.11
>>480
これはひどい
>for (int i = 0; i < bData.Height; ++i)
この辺とかド素人丸出し
0492デフォルトの名無しさん2013/03/23(土) 12:27:29.02
>>480
for (int i = 0; i < bData.Height; ++i)
{
for (int j = 0; j < bData.Width; ++j)
{
byte* data = scan0 + i*bData.Stride+j*bitsPerPixel / 8;

とかもうアホかと
これめちゃくちゃ遅いだろ
0493デフォルトの名無しさん2013/03/23(土) 12:45:05.99
どうすればいいかの代案も出せずに批判する奴は
実はどうすればいいのかはわかっていない。
0494デフォルトの名無しさん2013/03/23(土) 12:46:37.40
あれ見てわからないゴミはずっとゴミでいればいいと思うよ
0495デフォルトの名無しさん2013/03/23(土) 12:53:28.00
代案だって
廃案にすべきものに代案だって
声に出して笑っちゃった
0496デフォルトの名無しさん2013/03/23(土) 12:57:42.61
本人が満足してるなら良いんじゃないの(クスクス
0497デフォルトの名無しさん2013/03/23(土) 12:59:59.55
しかしプログラマーの井の中の蛙臭って凄いな
0498デフォルトの名無しさん2013/03/23(土) 13:03:57.60
まあDTだしな
0499デフォルトの名無しさん2013/03/23(土) 13:04:11.68
レベル2の壁がいかに厚いか分かるだろ
レベル3はこんな話をしない
0500デフォルトの名無しさん2013/03/23(土) 13:06:10.27
なんかネイティブ厨のバカが騒いでるがそんなもの適材適所だろw
0501デフォルトの名無しさん2013/03/23(土) 13:07:17.04
1つしか言語が使えないと適材を適所で使うこともできないけどな
0502デフォルトの名無しさん2013/03/23(土) 13:12:00.34
仮にもマをやっててひとつの言語しか使えないヤツなんているの?
0503デフォルトの名無しさん2013/03/23(土) 13:22:09.83
おまえら話掏りかえるの好きだな
>>384 がどうやったらここまで捻じ曲がるんだ
0504デフォルトの名無しさん2013/03/23(土) 13:23:26.90
ここは偉そうな初心者がいっぱいいるスレですね
0505デフォルトの名無しさん2013/03/23(土) 13:25:07.52
オレオレで話すからおかしくなるんだよな
0506デフォルトの名無しさん2013/03/23(土) 13:25:39.37
つ春休み
0507デフォルトの名無しさん2013/03/23(土) 13:26:16.99
え。384 の続きだったのか。ただの雑談になってるのかと思ってた。。
0508デフォルトの名無しさん2013/03/23(土) 13:33:36.10
おまえらだってプログラム始めて半年くらいで
コードコンプリートとかエッセンシャル何とかとか読んで
感化されて無敵感持っちゃった経験有るだろ
0509デフォルトの名無しさん2013/03/23(土) 13:52:07.60
感化って中2じゃあるまいし
そんなのは花粉だけで十分だ
0510デフォルトの名無しさん2013/03/23(土) 15:49:10.56
 __     ___       r‐ァ       r‐x  _,ゞ'ニニ‐マェ、   「f`
   `i L,..r´     `ヽ‐-n_ノ |      `vヒ y',    ミ}‐`=、_,! !
   ゙ー{{!      ',ーr‐ '          ーイ'{. ハ ト、 ,f 、 _ゞ‐ '、
     ム ,.、  ,_ ,、ヘ!  ヽ             vーヽt<゙   ヽ   \
      ` ヽ' ヽ.    ',             ヾ゙ゝ _  〉   ヽ
              辷――::'ゝ、             ,.-t‐゙':::::::::: ̄:ゝ、
        r `ゝ-―‐--' 、 !       .    〈 r゙' ´  ̄ `゙ヽ. ゙!
           V.|    .   ト{             vハ       トy
          rェフ        . ゙ー`         'ー'       ゙ー`
  糞スレだったねソーニャちゃん・・・  うるさい黙って支えてろ!
                           お前らは早く逃げろ!!
0511デフォルトの名無しさん2013/03/23(土) 15:51:05.61
>>480
http://jbbs.livedoor.jp/internet/17391/
■ このスレッドは過去ログ倉庫に格納されています