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


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

C、C++の最適化について語るスレ 2



1 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 09:54:14 ]
コンパイラ性能、コンパイルオプション、コードの最適化などについて語りましょう。
主に速度面の最適化を中心としますが、サイズなどの最適化もどうぞ。
なお、OS、CPU、コンパイラなどは限定しません

前スレ

C、C++の最適化について語るスレ
pc11.2ch.net/test/read.cgi/tech/1084676298/


735 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 12:34:02 ]
キャッシュにヒットするようにコンパクトにするっていうのも
最適化の一つだけどね。
ベンチが自分のやりたいことにあってるかどうかが重要。


736 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 14:00:19 ]
キャッシュサイズがどんどん大きくなってるから
そういうチューンは無駄かも

737 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/02(金) 14:52:38 ]
L1は増えない

738 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 17:56:58 ]
何でAMDは、Intel C++ Compilerみたいなの出さないのかなぁ・・・。

739 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:23:18 ]
ライフがすでにマイナスだから(笑)

740 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:01:04 ]
2のベキ乗間隔でメモリアクセスするとキャッシュミスヒットしやすいと、RS6000だかの説明にあった。


741 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:11:24 ]
うん、キャッシュラインが上書きされる可能性が高くなって、キャッシュに存在する可能性が下がって効率が悪くなるからだね。


742 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:48:56 ]
結論: メモリアクセスは素数間隔で行うべし

743 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:58:27 ]
系)配列のサイズ(一番下)を2の冪にしてはいけない



744 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:10:12 ]
そうは言ってもループバッファとか扱ってると余りは求めたくないしねえ。

745 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:13:08 ]
ループ?
全部展開しろカス

746 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:14:31 ]
リングバッファって言えばいいか。

747 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:24:15 ]
2のべき乗の配列を取りたいなら、
セットのサイズ(キャッシュサイズをセット数で割った数)の倍数のアクセスが増えると効率が悪くなるので、計算順序を変えるとかでそれを外せばOK。
セットのサイズに満たない配列は気にする必要はないかな。


748 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:43:03 ]
>>747
セットってのは, コンパレータの個数で ok?
でもって、ラインサイズと素な数で戦えば ok と言ってる?


749 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:45:49 ]
間違ってた
ラインサイズxコンパレータ数と素な数


750 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 09:40:56 ]
>>748
下の絵でアドレスでコーダがセットのライン数になる
upload.wikimedia.org/wikipedia/ja/d/d2/Read_4waycache.png
素因数にラインサイズxライン数が含まれると効率が下がる。
でもラインサイズに合わせるのは正解なので、ラインサイズx素数または、ラインサイズx(ライン数を因数として含まない数)がいいんじゃないかな。


751 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:37:21 ]
int[][]こんな感じのデータ構造に対する
効率化の手法まとめたページどこにいったっけ?

752 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:48:51 ]
if(n % 2 == 0) n / 2
if(n % 2 == 1) n * 3 + 1

753 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/23(金) 21:03:06 ]
int *[]にして列を都度割り当てすれば・・・



754 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:58:30 ]
ダンゴさんの書き込みでスレがdat落ちの危機に瀕したな。

755 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:13:09 ]
ダンゴさん兄弟

756 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:20:12 ]
やはり皆、半月以上レスが無くてもスレ見てるんだなw

757 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:23:33 ]
専ブラ使っているんで、レスがあれば一目で分かります。

758 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:26:11 ]
風呂から出てチンチンブラブラしてますたー

759 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:26:30 ]
それは非専ブラ組の発想ではないかな。
専ブラ組からすれば、新着レスのあるスレを一覧上部に集めて順に見ていく作業の一過程。
つまりdat削除しない限り、忘れてても縁は切れない。新着レスがあるたび、こうして思い出すことになるw

760 名前:126 mailto:sage [2008/05/24(土) 01:27:29 ]
う、かぶった。

実際、専ブラによって色々とスタイル変わってくるよね。
・・・良いんだか悪いんだかわからないけどw

761 名前:759=760 mailto:sage [2008/05/24(土) 01:29:48 ]
ごめん、名前間違えた。
これも専ブラならではか?(マウスホイールしちゃって、前回別の場所で使った名前が出た)。

762 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:34:00 ]
ずっともぐってたスレが一度あがって半端におちてると見失うw

763 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:35:41 ]
そういう時は履歴!



764 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:05:25 ]
代々木の
カレーライスうまいよね

765 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:36:24 ]
uint64_tの値を

16bitずつ小分けに取得したいのですが
何型にキャストするのが正しいのですか?

766 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:16:39 ]
uint16_t でええんちゃう?
そもそも、質問の意図が、そう言う話とはちゃってる?


767 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:24:12 ]
union知らんのって話でしょ

768 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:25:12 ]
>>765
キャストは最後の手段にしようぜ。
ふつうに u64 & 0xffff, (u64 >> 16) & 0xffff, .... でいいでしょ。

769 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:49:17 ]
ここは最適化のスレだから、一番最適化がかかりそうな
方法を聞いているに違いない。
配列としてアクセスするのが一番期待できるかな?

770 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:55:12 ]
>>769
動作保証が無けりゃ問題外でしょ。ビットシフトで取り出すように書いとけば、
コンパイラが勝手に 16 ビットずつメモリから読み出すように最適化することも
できるだろうし。むしろメモリへのアクセスを陽に書かないほうが早い可能性もある。

771 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 03:03:50 ]
union

772 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:12:11 ]
>>767,771
エンディアンに依存したらダメじゃね?

773 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:14:54 ]
そんなあなたに #if



774 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:18:29 ]
最適化するんだからマシン固有の癖(エンディアン)に
依存する問題まで考えて移植性を重視する必要ねーだろ

775 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:19:09 ]
それぞれの環境ごとに最適化すればいい

776 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/06/14(土) 00:43:50 ]
pextrwで(ry

777 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:49:04 ]
bswapも(ry

778 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:34:01 ]
小分けしたいだけなんだからエンディアン考えなくてもいいんじゃないかと思う

779 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:31:12 ]
union 使うなら考えんといかんだろ?

そもそも今時のプロセサならバレルシフタぐらいは積んでるだろうから、
>>768 で十分だと思うが。

780 名前:デフォルトの名無しさん [2008/06/17(火) 08:53:09 ]
ビット演算だけで、剰余を求める方法を教えてください

781 名前:デフォルトの名無しさん [2008/06/17(火) 08:58:26 ]

646 名前:デフォルトの名無しさん[] 投稿日:2008/01/23(水) 21:06:35
割り算を掛け算とビットシフトに置き換える計算式求めるプログラムできた

#include <iostream>
using namespace std;
main(){
unsigned int N,n,k;
for(N=2; N<65000 ; N++){
for(n=0; (1<<n)<N ; n++); n+=15;
double X=(pow(2,n)/N);
unsigned int Y=(unsigned int)X;
unsigned int d=0;
if(X-Y<=Y+1-X)d=(unsigned int)(pow(2,n)- (N-1)*Y)-1; else Y++;
printf("x /%5d = ( x * %5d + %5d ) >> %2d",N,Y,d,n);
for(k=1; k<(1<<16) ; k++) if(k/N != ((k*Y+d)>>n))break;
if(k==(1<<16))printf(" OK\n"); else printf(" ERR\n");
}}

647 名前:646[] 投稿日:2008/01/24(木) 15:42:18
64bit機か、内部で64bitまで計算結果を保持しているなら
32bitの割り算も出来るけど646は16bit同士です

782 名前:デフォルトの名無しさん [2008/06/17(火) 08:59:56 ]
2^n の剰余 とそれに近い数の剰余は簡単にも止まる。

783 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:37:14 ]
止めんなw



784 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:51:07 ]
>>780
あらかじめ除数がわかってないと>>781は使えないよ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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