のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,836人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレGCCについて part9

    gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    151 : デフォルトの名無 - 2009/10/25(日) 03:03:23 (+70,+29,-31)
    >>149
    そういう最適化はどこで宣言しようと同じだろ
    152 : デフォルトの名無 - 2009/10/25(日) 08:52:09 (+64,+20,+0)
    >>148>>149
    40年くらい前の最適化の話みたいですね。
    153 : デフォルトの名無 - 2009/10/25(日) 09:41:30 (+67,+30,+0)
    変数を宣言する=メモリ上に領域を確保する
    変数に代入する=メモリ上に書き込む

    こんな基本も分かってないようじゃ駄目だろ。

    でも、キャッシュから追い出される前に破棄できるデータ領域は重要だよな。
    1ms以下で終わる関数は終了までキャッシュメモリから追い出されない可能性あると思うし、
    使い終わったらすぐ破棄すれば、その分多くグローバル/スタティックデータをキャッシュで保持できるようになる。


    ところで、CPUロジック的には破棄したデータ領域の変更内容ってメインメモリに反映されるんだっけ?
    キャッシュが破棄されるのって内容が同一のときだけだろ?
    じゃあいくら破棄しても中身書き換えた以上はメインメモリに書き込むんじゃね?

    メインメモリへの書き込みを減らすには、できるだけ同じデータ領域を使いまわすのがいいんじゃないかな。
    ヒープ領域とかなら繰り返し使われるよね。
    でもJavaの場合で最小値が2MBだって。
    優先的に実行されるアプリじゃない限り使い回しは難しいね。

    確実に使いまわせるのはやっぱりスタック領域だよね。
    直近の4kByteが必ず1次キャッシュに入る。

    スタックに確保するには、引数渡ししたデータと普通に宣言した変数だよね。
    少々のデータなら参照渡しするより値渡ししたほうがキャッシュ効率がいい事になる。
    わけないか。
    使った分だけ古いのがキャッシュから追い出されるんだ。
    だから、ループで散らばったデータを使うくらいなら、ループだけを関数宣言してでもデータを一箇所に集めることが重要なのかな。
    あ、そこで書き込みしないデータをループの直前でフォーカス作って変数宣言してコピーしたらいいわけだ。
    結局おんなじか。
    何度もスタックをキャッシュから追い出すくらいなら普通にヒープにまとめて領域取ったほうがいいな。
    変更しなければ書き戻されはしないんだし。
    結局小さいデータはオート変数ででっかいデータはアロケート・・ごく普通だな。
    154 : デフォルトの名無 - 2009/10/25(日) 09:48:42 (+51,+28,-2)
    コンパイラの最適化舐めんなよ
    155 : デフォルトの名無 - 2009/10/25(日) 09:57:23 (+47,+21,-28)
    gccの最適化は糞過ぎる
    ICCを少しは見習えつーんだよ
    156 : デフォルトの名無 - 2009/10/25(日) 10:59:38 (+8,-28,-21)
    >>153
    35年くらい前の知識で停まってるね。
    register宣言が出てきた頃かな?
    157 : デフォルトの名無 - 2009/10/25(日) 10:59:52 (+49,+26,+1)
    ごめんなさい。。。
    158 : デフォルトの名無 - 2009/10/25(日) 11:53:01 (+57,+29,-15)
    ICCがgccより明かに優れているところなんてループ展開とかベクトル化とかだけだろ
    スタックをどういう風に使うかなんて部分では大差ないよ
    159 : デフォルトの名無 - 2009/10/25(日) 12:23:37 (+10,-29,-19)
    記憶だと、gcc 4.4でiccの最適化を越えてる
    160 : デフォルトの名無 - 2009/10/25(日) 12:59:09 (+43,+25,+0)
    それはないから
    161 : デフォルトの名無 - 2009/10/25(日) 13:05:18 (+27,+0,-32)
    GCCをアーキテクチャ決め打ちのICCと比較しようとする時点で
    頭の悪さが丸出しw
    162 : デフォルトの名無 - 2009/10/25(日) 14:10:45 (+104,+30,+0)
    163 : デフォルトの名無 - 2009/10/25(日) 14:35:52 (+14,-8,+1)
    やるじゃんgcc
    164 : デフォルトの名無 - 2009/10/25(日) 20:50:27 (+50,-30,-38)
    >>162
    64Bitだと偉い差だ。そうえいばx264なんかもビルドしてバイナリ配ってる人なんか32Bitは
    gcc3.4.6なんだけど64Bitはgcc4.4を使ってる。

    ちょっとgcc4.4.2を落として来るわw ffmpeg自己ビルドなのでw
    165 : デフォルトの名無 - 2009/10/25(日) 21:06:59 (+2,-25,-3)
    gcc4.4系統はバグもあるし
    ライセンス問題もあるから使わないほうがいいぞ
    166 : デフォルトの名無 - 2009/10/25(日) 21:10:40 (+46,+18,+0)
    まあ! なんて素敵なFUDでしょう!!
    167 : デフォルトの名無 - 2009/10/25(日) 21:15:05 (+3,-30,-137)
    とりあえずbinutilの2.20が10/16に新しいの出てたんでまず更新。

    でgcc4.4.2を気合のシステム上書き(現状4.3.4)の--prefix=/usrインスコでコンパイルスタートして
    5分くらい経ってやっぱダメだろって思ってCTL+C押して--prefix=/opt/gcc-4.3 --program-suffix=-4.3
    にしたヘタレです・・・

    今コンパイル中、CPUフェノムなんで--with-tune-32=k8 --with-tune-64=amdfam10こんなのもつけてみました。
    168 : デフォルトの名無 - 2009/10/25(日) 21:16:54 (+3,-30,-12)
    おおお、焦ったww
    --prefix=/opt/gcc-4.4 --program-suffix=-4.4ですねw
    変なとこからコピペしたから4.3になってた。本当に4.3のままconfigしちゃったかと思って自分でビビったわ
    169 : デフォルトの名無 - 2009/10/25(日) 21:28:09 (+87,+29,-8)
    >>164
    グラフの目盛りよく見ろ。そのうえでえらい差って感じたんならいいけどさ。
    170 : デフォルトの名無 - 2009/10/25(日) 21:30:37 (+46,+11,+1)
    >>169
    ああああああああああああああああああああああああぁぁぁぁ
    171 : デフォルトの名無 - 2009/10/25(日) 21:52:36 (+3,-30,-305)
    とか言いながら終わった、しかしグラフには騙された・・・
    $ /opt/gcc-4.4/bin/gcc-4.4 -v
    Using built-in specs.
    Target: x86_64-linux-gnu
    コンフィグオプション: ../configure --prefix=/opt/gcc-4.4 --program-suffix=-4.4 --enable-shared --with-system-zlib
    --without-included-gettext --enable-threads=posix --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
    --enable-objc-gc --enable-mpfr --with-gmp --with-tune-32=k8 --with-tune-64=amdfam10
    --with-multilib-list=x86_64-linux-gnu,i386-linux-gnu --build=x86_64-linux-gnu --host=x86_64-linux-gnu
    スレッドモデル: posix
    gcc version 4.4.2 (GCC)
    172 : デフォルトの名無 - 2009/10/26(月) 20:19:45 (+48,-29,-19)
    こんな目盛りなら騙して欲しいよな
    173 : デフォルトの名無 - 2009/11/14(土) 21:57:31 (-1,-29,-18)
    ゲーツェーツェーにはCPP CXX g++ などなど
    C/C++フンパイラだけいろいろあるけど


    何がどう違うの。



    174 : デフォルトの名無 - 2009/11/14(土) 23:20:15 (+0,-28,-1)
    CPP CXXはシェルの変数じゃなかろうか
    175 : デフォルトの名無 - 2009/11/14(土) 23:28:55 (+3,-29,-70)
    cpp はプリプロセッサだろ。 常識的に考えて。
    C++ のコンパイラやコンパイラドライバではない。

    システムによってはコマンドに + の文字が使えないことがあるので、
    便宜上用意されているのが cxx 。
    たぶん、中身は一緒だと思う。
    176 : デフォルトの名無 - 2009/11/15(日) 00:23:33 (-1,-29,-18)
    cc、cxx、c++辺りは、GCCでないシステム標準のコンパイラのことがある。
    LinuxなどGCCを標準のコンパイラとして採用していると、GCCへのシンボリックリンクになっているけど。
    177 : デフォルトの名無 - 2009/11/15(日) 03:47:24 (+17,-7,+0)
    >>159
    よぉ、AMD使い!
    178 : デフォルトの名無 - 2009/11/16(月) 00:13:00 (-1,-29,-4)
    AMDでgccに負けるほどiccってダメなのか
    179 : デフォルトの名無 - 2009/11/16(月) 01:14:48 (+33,+10,-7)
    商用コードは品質が悪いから仕方ない
    180 : デフォルトの名無 - 2009/11/16(月) 08:35:20 (+9,-13,+0)
    181 : デフォルトの名無 - 2009/11/16(月) 11:15:09 (+28,+0,-18)
    それ読んでgcc 4.4.3で試したけどその通りに最適化してくれないことがままあって困るw
    182 : デフォルトの名無 - 2009/11/16(月) 19:54:02 (+62,+29,-46)
    パーパプー パーパプー パーパプーパーパプーパーパプー
    ピーロピーローリーローリロ
    ででーででーででー
    パスーン

    ピンポロピンポロピンポロピロピロプー



    未だに自作のプログラムでダウボーイを作ってやろうと思っているのにできねえ俺は
    もうだめだ
    183 : デフォルトの名無 - 2009/11/19(木) 12:27:58 (+7,-30,-147)
    gcc(ver4.3.2) のコンパイルオプションで、
    -lXm -lXt -lSM -lICE -lXpm -lXext -lX11 -lm
    とか必要なライブラリ全てを記述しなくても
    -lXm
    だけでOKでした。
    何か指定したライブラリ(この場合 /usr/lib/libXm.so.2.0.1) の依存ライブラリを調べてリンクしてくれるようですが、これって昔からそうだったのでしょうか?
    10年近く前は、一つでも指定を忘れると駄目だったので、よく知らないライブラリも呪文のように指定していたような記憶があるのですが。
    184 : デフォルトの名無 - 2009/11/19(木) 19:08:48 (-1,-29,-20)
    >>183
    ライブラリが収まってるディレクトリに libXm.la ってファイルがないか?
    それ読んでみ
    185 : デフォルトの名無 - 2009/11/21(土) 01:34:35 (-1,-29,-7)
    gcc 単体で libtool ライブラリなんか見るの?
    186 : デフォルトの名無 - 2009/12/01(火) 20:54:52 (+57,+29,-30)
    ビルドした時刻をバイナリに埋め込みたいんだけど
    なんかいい方法ある?
    最後にリンクするときに日時がわかるものを埋め込みたい
    187 : デフォルトの名無 - 2009/12/01(火) 21:22:47 (+33,-29,-8)
    コンパイル日時じゃなくてリンク日時?
    前者は__DATE__とか__TIME__とかあるけど
    188 : デフォルトの名無 - 2009/12/01(火) 21:36:38 (+0,-28,-9)
    >>187
    Makefile で、リンクの直前にそれかけるしか無いんじゃないかな。
    189 : デフォルトの名無 - 2009/12/01(火) 21:56:37 (+8,-30,-43)
    __DATE__,__TIME__を初期値にしたグローバル変数だけの
    オブジェクトをリンクごとに生成して埋め込めば?
    190 : 189 - 2009/12/01(火) 21:58:39 (+55,+28,+0)
    ごめん、>187と同じだった。
    191 : デフォルトの名無 - 2009/12/06(日) 13:41:22 (+17,-30,-106)
    質問!
    Linux@i386(IA-32)のgccでC言語とアセンブラを組み合わせて使っています。
    ebx, esi, ediは通常ならcallee-saveですが、
    アセンブラ側の都合でcaller-saveとして扱わなければならない箇所があります。
    今はmanを参考に-fcall-used-~オプションを付け
    プログラム全体でcaller-saveとして扱っています。
    関数ごとにcallee-save, caller-saveを切り替えて速度を稼ぐことは可能ですか?
    可能なら方法を教えてください。
    192 : デフォルトの名無 - 2009/12/06(日) 14:57:42 (+3,-29,-19)
    >>191
    特殊な ABI を要求する部分だけ別モジュールにして、
    そこだけ CFLAGS 切り替えればいいんじゃない?

    昔組み込みでそんな感じにしてたけど。
    193 : デフォルトの名無 - 2009/12/06(日) 15:19:44 (-1,-29,-28)
    ああ、でも callee-save 環境から caller-save 環境を
    どう呼び出かってのがあるね。どうやってたかな…。
    194 : デフォルトの名無 - 2009/12/06(日) 15:22:57 (-1,-29,-6)
    195 : デフォルトの名無 - 2009/12/06(日) 15:28:05 (-1,-29,-7)
    ようわからんけど、attributeで指定するとか?
    196 : デフォルトの名無 - 2009/12/06(日) 15:31:40 (+3,-29,-21)
    すまん、ちょっとよく覚えてない。多分 hook を挟んで
    どうにかしていたと思う。

    ただ 個別に -fcall-used-REG を保守するのも段々面倒
    になってきて、最後は「えいや」で setjmp ばりに保存
    する hook にしちゃった気がする。
    197 : 191 - 2009/12/06(日) 16:52:18 (-1,-30,-19)
    >>192-196
    ありがとうございます。
    まず__attribute__((returns_twice))を調べてみます。
    198 : デフォルトの名無 - 2010/01/08(金) 15:41:53 (+13,-30,-36)
    教えてください

    gccでjavaの練習をやろうと思うのですが、
    gcc -vで
    --enable-languagesにjavaが含まれていれば大丈夫でしょうか
    gcj -vだとcommand not foundになります
    199 : デフォルトの名無 - 2010/01/08(金) 16:54:23 (+3,-30,-76)
    どうしても gcj を使わなければならないという理由がないのなら
    Sun の JDK をインストールして勉強しれ。
    # command not found に対処できない人が使えるようなものじゃないから…
    200 : 198 - 2010/01/08(金) 19:20:48 (+17,-10,-13)
    レストン

    もう少しgccを触って駄目だったらJDK逝きます
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - std:map + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について