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


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

C言語なら俺に聞け(入門編)Part 95



1 名前:デフォルトの名無しさん [2012/01/13(金) 22:05:06.14 ]
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 94
toro.2ch.net/test/read.cgi/tech/1324648274/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 155代目
toro.2ch.net/test/read.cgi/tech/1325685876/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

255 名前:254 mailto:sage [2012/01/17(火) 12:30:35.88 ]
d = a < 32;
e = a > 224;
if(d || e){
if(d){
b = a; //A
}else{
b = 256 - a; //B
}
c = b * 100; //C
}
//D

こういうのもifが2つあって、なんだか冗長です。

256 名前:254 mailto:sage [2012/01/17(火) 12:30:55.20 ]
void hoge(int *pc, int b){
*pc = b * 100; //C
}
---
if(a < 32){
b = a; //A
hoge(&c, b);
}else if(a >> 224){
b = 256 - a; //B
hoge(&c, b);
}
//D

これも関数呼び出しコードが重複してるし
関数呼び出しコストがもったいないです。
inlineにすれば、呼び出しコストはかからないけど
//Cの部分がアセンブラレベルで重複してしまいます。

結局gotoを使わないと、重複は避けられないのでしょうか?

257 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 13:26:36.03 ]

if( a < 32 ){
 //A
}
if ( a > 224 ){
 //B
}
if( ( a < 32 || a > 224)){
 //C

//D


>>254は、コードが複雑になった場合に追っかけるのが面倒
>>255は、何やってるのかわかりづらい
>>256は、今時のシステムならそのくらいのコスト気にすんな。関数名次第では分かりにくい。

自分は、同じ基準で判定する方がコードが分かりやすい。
このケースの場合、a を基準にするのではなく、
//A、//B、//C、//Dのそれぞれのコードがどういう条件なら実行できるか、
を同じレベルで書いた方が後で見て分かりやすい。



258 名前:254 mailto:sage [2012/01/17(火) 14:59:48.07 ]
なるほど、>>255でネストするよりわかりやすいです。

多少冗長になっても、メンテを考えればgotoなど使わない方がいいと言うことですね。

ありがとうございます。

259 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 15:13:29.39 ]
//Cの条件はb>=32か?


260 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:08:24.42 ]
goto使わなくても大抵コンパイラ後はgoto相当の処理してるんだがな。

261 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:14:30.48 ]
goto使ってもいいと思うんだけどな。

262 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:30:33.18 ]
あれならこうかな。

  bool a32 = (a < 32)
  bool a224 = (a > 224)

  if (a32 || a224) {
    if (a32) {
      A();
    } else {
      B();
    }
    C();
  }
  D();


263 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:38:28.45 ]
>if (a32 || a224) {
if (a32 | a224) {
の方がいい場合あり。
昔逆アセンブルしてみたら
if(a32) goto xxx;
if(a224) {
xxx:
...
}
的な処理してた。

まぁ処理速度必要で、
一秒間に数千、数万回実行される処理でなきゃそこまでする必要は無いと思う。



264 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:24.40 ]
組み込みとか4kデモとかじゃないかぎり気にせず関数化

265 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:40:35.91 ]
って、>>262>>255と同じだったか。
>>263
そこまで速度を必要とするならそもそも条件判断をしないようにすればいい。

266 名前:254 mailto:sage [2012/01/17(火) 16:50:41.22 ]
4kではないですが、動画の処理なので、関数呼び出しコストはかなり気になります。

条件判断しないようにすればいいとは、どのように書けばよいのですか?

267 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:51:40.47 ]
>>263
||を|とかかれると?と思ってしまう。
あー、これはほかにもいろいろバグが入ってるんだろうなー、と残念な
気持ちになるんで人が見るコードの場合はやめてくれ。

268 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:52:58.71 ]
>>266
一番簡単なのは必要な処理を用意して関数ポインタ使って条件によって切り替える。
一般的に高速化と冗長性の削減は両立しないんだよ。

269 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:53:19.03 ]
まぁ、それ以前にOpenVCなり使えるものを使うのがいいと思うけどな。

270 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:53:41.91 ]
OpenCVな。

271 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:55:25.05 ]
昔アセンブラで計算処理部分で分岐無くすように書いたことあったな。
フラグ取得→ローテーション命令で0か0ffffhに加工→計算過程でANDして加算
速くなったかどうかは知らん。

272 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:55:39.99 ]
あぁ、ピクセル処理みたいのならテーブル引きにすればいいよ。

273 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:57:15.88 ]
高速化が必要だと思った場合はまずプロファイルを取るのが基本。
1%の処理を100万倍速くしたところで1%も速度は向上しない。



274 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 16:58:51.38 ]
>人が見るコードの場合はやめてくれ。
0=偽 0以外=真 って確証(確信?)ないからやらないよ。

275 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:00:19.16 ]
いやいや、それは仕様で決まってるから。
どういうこと?

276 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:02:44.89 ]
仕様書見たこと無いってこと。


277 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:06:38.13 ]
まぁこのスレの99%はそうだろうからそれは気にしない。

278 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:07:49.12 ]
>>255
関数のサイズと関数の呼び出しコストって関係あるの?

279 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:09:48.50 ]
各ABCの処理が、簡略化されたからそうなっているのか、実際にそうなのかにもよりそうな話だなぁとおもったり。

280 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:12:29.87 ]
>>278
ない。

281 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:13:23.01 ]
もちろん、厳密にはキャッシュの利用が変わってきて速度は変わる。
が、そんなことを気にするのはあと数レベル先の話。

282 名前:デフォルトの名無しさん [2012/01/17(火) 18:10:35.59 ]
C言語のテトリスを標準出力で作るのって無理ですか?

283 名前:デフォルトの名無しさん [2012/01/17(火) 18:14:32.35 ]
日本語変だな。

テトリスをC言語によって作るのは出来ると思うのですが
標準出力のみで作れますか?



284 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:54.16 ]
できるよ。

285 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:17:59.44 ]
OSや端末を絞れば作れるでしょうしCUIのテトリスはぐぐれば出てくるでしょう

286 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:18:39.20 ]
標準のみだと改行しないといけないけど、それ我慢すればできない理由はないね。

287 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:20:30.52 ]
Curses使えば普通に楽しめそう。

288 名前:デフォルトの名無しさん [2012/01/17(火) 18:23:18.51 ]
>>286
グラフィック関連の低級性ってどうなってんの?
プログラミングだとアセンブラでしょう。
グラフィックは?

289 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:24:24.40 ]
何言ってるのか分からん

290 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:31:30.36 ]
ニコ動に1時間でWindows版テトリス作るみたいなのがあったからそれでも
見てみたらどうか。

291 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:32:00.50 ]
>>288
16ビットのときは、CPUで特定のアドレスに書きこむと画面に反映されてた。
それ以降は知らん。

292 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 18:40:41.05 ]
昔昼休みにUNIXでテトリス対戦してる人がいた。
見た感じCUIだった。

293 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:05:11.88 ]
>>291
Windows には専用の API がある。




294 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:23:05.12 ]
標準出力って事は、コンソール出力なんだろうから、
エスケープシーケンス使うかすればいいのかな?

295 名前:デフォルトの名無しさん [2012/01/17(火) 19:47:18.39 ]
>>290
見たww

>>291
なるほどぉ。

いやもっと低級な事。
インクとかは?どうやって全色出してるのかなと。

296 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:48:22.99 ]
すまんが、そのインクとかいうものとC言語の関係を教えてくれないか?

297 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:57:22.70 ]
>>295
環境に依存すると思う。どういう環境(OS、処理系)で作りたいかを教えれ

298 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 19:57:30.73 ]
>>266
なんか、遠い記憶にそんな努力をしたことがあるような、無いような。
ポケコン時代だと、
if文ってスゲー遅いんだよな・・・
それを嫌ってForNextで書いてた。
でも、そうするとコードの容量が大きくなるんだよなぁ。


>>266
224と32にとても意味があるのであれば、ビットシフトを駆使する方法もあるかもねぇ。
a >> 8 が0 なのは ABD
a >> 9 が1 なのは ACD

( a >> 8 ) * ( a >> 9 ) が1なのはD


299 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:04:34.39 ]
色々考えたソースがコンパイラの最適化に勝てないことも多々…。

300 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:06:31.09 ]
比較演算自体内部で分岐命令使ってる気もするがな。


301 名前:デフォルトの名無しさん [2012/01/17(火) 20:06:37.72 ]
>>297
1990年くらいのパソコン。
一太郎しか入ってなかった。


302 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:12:01.09 ]
パソコンのメーカー名と機種のシリーズ名も言えないんじゃなぁな。

303 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:14:06.20 ]
>>301
MS−DOSの頃で、PC9801をターゲットにしてたなら、
テキストVRAM直書きが速かったかも。VRAMに表示文字以外に
確か属性があって、色やブリンクなどをセットできてた。



304 名前:デフォルトの名無しさん [2012/01/17(火) 20:16:56.86 ]
>>303
詳しすぎワロタw


C言語に詳しい人って同時にコンピュータ関連詳しすぎw

305 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:22:07.27 ]
PC-9801プログラマーズBibleが未だに捨てられない。

306 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:24:02.15 ]
>>300
ちゃうちゃう。
サンプルコード書けない理由にもなってるけど、

もしABCDの処理が加算なら、

(加算数A) * ( (~a) >>8 ) + (加算数B) * (a >> 9 ) + .....

と比較しなくてもできる。

>>299
まあねぇ。
特に最近はHyperThreadingとかキャッシュとかねぇ。コードでは全く見えない高速化があるからねぇ。

307 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:25:57.57 ]
>C言語に詳しい人って同時にコンピュータ関連詳しすぎw
アセンブラの次にハードを直接いじるのに適してる言語だと思ってるから。

308 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:36:08.57 ]
>>295
複合機(レーザー)やってたが、PCで作るのは画像データorスクリプトだけだよ。
後は複合機側でやる。色はCMYKを混ぜると全色でる。


309 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:38:23.26 ]
結局はハード屋の奴隷
テレビの画質なんてものはLSIで決まる
Cプログラマは上からレジスタ操作してハードウェア様の機能をオンオフするだけ

310 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:39:05.47 ]
>>308
VxWorks ?

311 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:40:56.60 ]
>>310
大当たりw

312 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:15.01 ]
いやいや
メタリックインキや蛍光インキもありますぜ旦那

313 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:46.37 ]
>>308
CMYKって表現が分かる人、どのくらいいるのかな?



314 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:42:59.11 ]
>>311
豊橋じゃないってことやねwww

315 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:43:48.60 ]
熱転カラーリボン

316 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:44:14.16 ]
>>314
違う。
豊橋だ

317 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 20:44:28.44 ]
初期の熱転写はすぐ熱ダレしてたな。

318 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 21:37:08.40 ]
>>313
かなりたくさん。

319 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 21:37:45.43 ]
>>312
プリントゴッコなつかしい

320 名前: ◆QZaw55cn4c mailto:sage [2012/01/17(火) 23:11:18.21 ]
>>303
それが、裏VRAM に書く方法が今でもわからなかったりするのです。

321 名前: ◆QZaw55cn4c mailto:sage [2012/01/17(火) 23:13:44.36 ]
>>313
わかんない。シアンマゼンダイエロー、K‥‥‥K‥‥‥K‥‥‥キンタマか?

322 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:15:45.85 ]
>>321
ブラック

323 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:26:58.27 ]
>>320
バンク切り替えすればいいだけだろ。
ほんと、程度が低いな、お前。



324 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:27:49.89 ]
>>320
遙か彼方の記憶なのだが、どこかのポート出力でバンク切り替えしていたような?

325 名前: ◆QZaw55cn4c mailto:sage [2012/01/18(水) 00:17:49.40 ]
>>323
バンク切り替えはどうやればいいのですか?

>>324
www.webtech.co.jp/company/doc/undocumented_mem/
を探してはみたのですが‥‥‥。0A4hか?

326 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:40:51.10 ]
何言ってんだお前。
そんなのPC98使ってた人間なら常識だろ。
知らないのに出てくるとは、よっぽどなんだな。

327 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:18:15.95 ]
使ってれば常識なの?PC98で開発してればの間違いではないのだろうか。
PC98つかったことないけど。

328 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:46:44.23 ]
そうしてたかのように装ったのはお前だろ、QZ

329 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 02:59:37.35 ]
恋は盲目だな。>>327はQZじゃないよ。

330 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 03:35:14.00 ]
プラットフォームを選ばない会話。
x86以外ではmipsしか知らない俺には無理。

331 名前:254 mailto:sage [2012/01/18(水) 08:29:12.36 ]
>>298 比較演算よりビットシフトを使った条件のが速いというのは聞いたことがあります。

>>306 なるほど、条件×加算数 というふうにすればいいのか。
これを使って、いくつか書き直してみたいと思います。

ありがとうございます。

条件とAとBは例で示したものが多いです。
Cは3〜10行くらいです。
Dはいろいろあって、かなり長いです。

332 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 08:40:06.15 ]
とりあえず、いまどきのプロセッサで速度を気にする場合
まず、メモリアクセスと条件分岐を減らすのが基本。

その上で、ビット演算がどうとかいうのは実際に測定してから。

333 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 09:47:49.57 ]
>>331
自分で書いていてなんなんだが、

× ( (~a) >>8 )
○ ( (~a) >>8 ) && 1   //シフトした後1桁目だけを抽出

演算量が増えると、比較した方が早くなる可能性は十分にある。
また、デバッグがしにくい。16進法を脊髄反射で2進法にできるなら問題ないけど。
値の持たせ方も変わってくる(ビット演算しやすいデータ形式で持たせる必要がある)
ポインタを妙に使い出す
フラグを妙に使い出す( int 変数に複数の情報を持たせたくなる )
デバッグ関数( printf で2進法を表示するコードが欲しくなる )
結果としてコードの見通しが悪くなる


なんて特徴もあるからねぇ。注意は必要だけど。



334 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:05:23.18 ]
パフォーマンスが気になるなら、
ちょっとばかしアセンブラを勉強して、この資料を見るとよい。

download.intel.com/jp/developer/jpdoc/ia32.pdf

パフォーマンスが厳しい場合、割り算をしたがらない気持ちがよく分かると思うよ。

MOV( メモリからの読み込みなどで使用) が0.5クロック
CALL(関数の呼び出しでよく使われる)で5クロック
RET( Return ) 8クロック
DIV(割り算)が 56〜70クロック

CMP自身は0.5クロックだけど、If文だとJMPを伴うのでもう少し大きいかな?
ビットシフトは、MOVとシフト命令の1.5かな?
関数を使えば、CALLとRETが必要だから最低13クロック以上掛かることになる。

この辺は詳しくないので、説明はできないけど。

335 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 10:52:06.29 ]
なんかスゲー間違えてる・・・気がする・・・
だれか助けて

関数に引数1つをつけて呼んでリターンした場合
movl $0xa,(%esp)        ; 0.5クロック
call 0x4013e1 <func1(int)>  ; 5クロック
mov $0x0,%eax         ; 0.5クロック
leave                ; leaveは実質mov pop movなので、2.5クロック
ret                ; 8クロック
なので、最低 16.5クロック+関数内での演算クロック数が必要

ビットシフトは、
sarl $0x2,0x1c(%esp) ; 4クロック
4クロック+演算クロック数

if文
cmpl $0x0,0x18(%esp)     ; 0.5クロック
jne 0x4013ee <main()+46>  ; 不明:0.5クロック程度?
1クロック+演算クロック数が必要

あれ?
If 文って結構早くね?
てか、ビットシフト遅くね?
If文って分岐予測が当たればさらに高速化するし。

336 名前:デフォルトの名無しさん [2012/01/18(水) 11:53:53.16 ]
ホッケーゲームみたいなのを作ってるんだが
バーとボールの当たり判定はどうすればいいんだ?

337 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:57:33.93 ]
>>336
物理演算ライブラリに丸投げ

338 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:39:39.33 ]
>>336
バーとボールの座標値を比較。
つーか、どう作っているのか判らんのにどう判定すればいいか分かるわけないだろw

>>335
すげぇ無駄な努力をしていることに気付け。
その高々数十クロックは一体何分の一秒なのか判っているのか?

339 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:43:27.54 ]
>>338
映像処理って、1秒に30個とか60個の画像が含まれていて、それぞれの画像は1920*1080ドットあったりして
その各ドットにはRGBの3つの8bit値が存在するんだけど、
1秒の映像を処理するのに何回画素値に対する処理が動くか判っているのか?

340 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:57:18.96 ]
画像処理は小さな最適化が大きな効果を及ぼす分野の一つだよねー。
アムダールの法則で言うところのpの値が限りなく1に近い。

341 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 13:58:12.83 ]
まずビデオチップで演算できないかを考える。

342 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:02:05.12 ]
速度上げるなら重複増やしてでもループ(分岐)回数減らすのがデフォ。

DOS時代は同じ処理を16回分連続で書いたこともあった。

343 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:03:04.33 ]
1920*1080*3*60=約0.4GB。
そりゃぁ、一画素を三回ずつ愚直に計算してたら回数は多いわねぇ。
CPUでそんなことすることを考えているとしたらそのほうが間抜けだ。



344 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:04:12.65 ]
>>342
今時のコンパイラなら、ループアンローリングもやってくれるよ。
ついでにベクタ化もしてくれるかもしれない。

345 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:56:20.00 ]
>>343
愚直に計算しないためにも、たとえばSSEつかって4画素(4つの32bit整数として)同時にフィルタをかけたりするよね。
>>335はそういうことにつながる話でもあるんだけど、それも>>338みたいに無駄な努力で間抜けな考えだと思うの?

ただいえるのは、スレ違いだということ。

346 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:02:35.06 ]
「CPUで」だから、GPUにやらせろっていいたいんだろう
だからどうしたのって話だけどねー

347 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:06:42.41 ]
少なくとも、今時のCPUはクロック通りに動くわけじゃない。
パイプラインもあればキャッシュミスすればペナルティもある。
クロック数だけ足し算しても屁の突っ張りにもならないな。

前からこのスレでも言われているだろう。所要時間を知りたかったら実測しろと。

348 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:16:49.69 ]
少しでも軽くなるように期待してあらかじめ書いているだけだろう?

349 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:21:30.93 ]
>>347
所要時間を知りたいわけじゃないでしょ
今問われている箇所がボトルネックになっていることを突き止めたあとかもしれないよ

350 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:27:36.73 ]
意外とレベルの高い質問の中くだらない事で恐縮なんだが…
int main() {
func1();
}
void func1() {
func2();
}
void func2() {
func3();
}…
ひとつの関数を見やすくするという理由だけで、こんな風に
入れ子になっていく事は、なるべく避けた方がいいのかな?



351 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:30:56.90 ]
>>350
ちゃんと名前付けてれば大丈夫だと思うよ。
「見やすくする」という基準がずれてなければ。

352 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:40:12.61 ]
>>347
言ってることはあってるが、今言うことじゃないな

353 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:52:40.36 ]
>>351
すばやい回答ありがとう!
見やすくしようと思って整理してたら、どんどん関数が増えていって
ちと不安になってきたので質問しました。



354 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:17:24.00 ]
>>352
その実測が既に難しくなっているんだけどな。

そのコードがどのくらい掛かるかを調べるために、そのコードを繰り返したら
キャッシュあたりまくりでパフォーマンスが良すぎる値が出てくる。


355 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:26:20.65 ]
それはテストが下手だといわざるを得ない






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

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

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