私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレGCCについて part9
gcc スレッド一覧へ / gcc とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
>>149
そういう最適化はどこで宣言しようと同じだろ
そういう最適化はどこで宣言しようと同じだろ
変数を宣言する=メモリ上に領域を確保する
変数に代入する=メモリ上に書き込む
こんな基本も分かってないようじゃ駄目だろ。
でも、キャッシュから追い出される前に破棄できるデータ領域は重要だよな。
1ms以下で終わる関数は終了までキャッシュメモリから追い出されない可能性あると思うし、
使い終わったらすぐ破棄すれば、その分多くグローバル/スタティックデータをキャッシュで保持できるようになる。
ところで、CPUロジック的には破棄したデータ領域の変更内容ってメインメモリに反映されるんだっけ?
キャッシュが破棄されるのって内容が同一のときだけだろ?
じゃあいくら破棄しても中身書き換えた以上はメインメモリに書き込むんじゃね?
メインメモリへの書き込みを減らすには、できるだけ同じデータ領域を使いまわすのがいいんじゃないかな。
ヒープ領域とかなら繰り返し使われるよね。
でもJavaの場合で最小値が2MBだって。
優先的に実行されるアプリじゃない限り使い回しは難しいね。
確実に使いまわせるのはやっぱりスタック領域だよね。
直近の4kByteが必ず1次キャッシュに入る。
スタックに確保するには、引数渡ししたデータと普通に宣言した変数だよね。
少々のデータなら参照渡しするより値渡ししたほうがキャッシュ効率がいい事になる。
わけないか。
使った分だけ古いのがキャッシュから追い出されるんだ。
だから、ループで散らばったデータを使うくらいなら、ループだけを関数宣言してでもデータを一箇所に集めることが重要なのかな。
あ、そこで書き込みしないデータをループの直前でフォーカス作って変数宣言してコピーしたらいいわけだ。
結局おんなじか。
何度もスタックをキャッシュから追い出すくらいなら普通にヒープにまとめて領域取ったほうがいいな。
変更しなければ書き戻されはしないんだし。
結局小さいデータはオート変数ででっかいデータはアロケート・・ごく普通だな。
変数に代入する=メモリ上に書き込む
こんな基本も分かってないようじゃ駄目だろ。
でも、キャッシュから追い出される前に破棄できるデータ領域は重要だよな。
1ms以下で終わる関数は終了までキャッシュメモリから追い出されない可能性あると思うし、
使い終わったらすぐ破棄すれば、その分多くグローバル/スタティックデータをキャッシュで保持できるようになる。
ところで、CPUロジック的には破棄したデータ領域の変更内容ってメインメモリに反映されるんだっけ?
キャッシュが破棄されるのって内容が同一のときだけだろ?
じゃあいくら破棄しても中身書き換えた以上はメインメモリに書き込むんじゃね?
メインメモリへの書き込みを減らすには、できるだけ同じデータ領域を使いまわすのがいいんじゃないかな。
ヒープ領域とかなら繰り返し使われるよね。
でもJavaの場合で最小値が2MBだって。
優先的に実行されるアプリじゃない限り使い回しは難しいね。
確実に使いまわせるのはやっぱりスタック領域だよね。
直近の4kByteが必ず1次キャッシュに入る。
スタックに確保するには、引数渡ししたデータと普通に宣言した変数だよね。
少々のデータなら参照渡しするより値渡ししたほうがキャッシュ効率がいい事になる。
わけないか。
使った分だけ古いのがキャッシュから追い出されるんだ。
だから、ループで散らばったデータを使うくらいなら、ループだけを関数宣言してでもデータを一箇所に集めることが重要なのかな。
あ、そこで書き込みしないデータをループの直前でフォーカス作って変数宣言してコピーしたらいいわけだ。
結局おんなじか。
何度もスタックをキャッシュから追い出すくらいなら普通にヒープにまとめて領域取ったほうがいいな。
変更しなければ書き戻されはしないんだし。
結局小さいデータはオート変数ででっかいデータはアロケート・・ごく普通だな。
ICCがgccより明かに優れているところなんてループ展開とかベクトル化とかだけだろ
スタックをどういう風に使うかなんて部分では大差ないよ
スタックをどういう風に使うかなんて部分では大差ないよ
>>162
64Bitだと偉い差だ。そうえいばx264なんかもビルドしてバイナリ配ってる人なんか32Bitは
gcc3.4.6なんだけど64Bitはgcc4.4を使ってる。
ちょっとgcc4.4.2を落として来るわw ffmpeg自己ビルドなのでw
64Bitだと偉い差だ。そうえいばx264なんかもビルドしてバイナリ配ってる人なんか32Bitは
gcc3.4.6なんだけど64Bitはgcc4.4を使ってる。
ちょっとgcc4.4.2を落として来るわw ffmpeg自己ビルドなのでw
とりあえず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こんなのもつけてみました。
で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こんなのもつけてみました。
おおお、焦ったww
--prefix=/opt/gcc-4.4 --program-suffix=-4.4ですねw
変なとこからコピペしたから4.3になってた。本当に4.3のままconfigしちゃったかと思って自分でビビったわ
--prefix=/opt/gcc-4.4 --program-suffix=-4.4ですねw
変なとこからコピペしたから4.3になってた。本当に4.3のままconfigしちゃったかと思って自分でビビったわ
>>164
グラフの目盛りよく見ろ。そのうえでえらい差って感じたんならいいけどさ。
グラフの目盛りよく見ろ。そのうえでえらい差って感じたんならいいけどさ。
>>169
ああああああああああああああああああああああああぁぁぁぁ
ああああああああああああああああああああああああぁぁぁぁ
とか言いながら終わった、しかしグラフには騙された・・・
$ /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)
$ /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)
ゲーツェーツェーにはCPP CXX g++ などなど
C/C++フンパイラだけいろいろあるけど
何がどう違うの。
C/C++フンパイラだけいろいろあるけど
何がどう違うの。
cpp はプリプロセッサだろ。 常識的に考えて。
C++ のコンパイラやコンパイラドライバではない。
システムによってはコマンドに + の文字が使えないことがあるので、
便宜上用意されているのが cxx 。
たぶん、中身は一緒だと思う。
C++ のコンパイラやコンパイラドライバではない。
システムによってはコマンドに + の文字が使えないことがあるので、
便宜上用意されているのが cxx 。
たぶん、中身は一緒だと思う。
cc、cxx、c++辺りは、GCCでないシステム標準のコンパイラのことがある。
LinuxなどGCCを標準のコンパイラとして採用していると、GCCへのシンボリックリンクになっているけど。
LinuxなどGCCを標準のコンパイラとして採用していると、GCCへのシンボリックリンクになっているけど。
パーパプー パーパプー パーパプーパーパプーパーパプー
ピーロピーローリーローリロ
ででーででーででー
パスーン
ピンポロピンポロピンポロピロピロプー
未だに自作のプログラムでダウボーイを作ってやろうと思っているのにできねえ俺は
もうだめだ
ピーロピーローリーローリロ
ででーででーででー
パスーン
ピンポロピンポロピンポロピロピロプー
未だに自作のプログラムでダウボーイを作ってやろうと思っているのにできねえ俺は
もうだめだ
gcc(ver4.3.2) のコンパイルオプションで、
-lXm -lXt -lSM -lICE -lXpm -lXext -lX11 -lm
とか必要なライブラリ全てを記述しなくても
-lXm
だけでOKでした。
何か指定したライブラリ(この場合 /usr/lib/libXm.so.2.0.1) の依存ライブラリを調べてリンクしてくれるようですが、これって昔からそうだったのでしょうか?
10年近く前は、一つでも指定を忘れると駄目だったので、よく知らないライブラリも呪文のように指定していたような記憶があるのですが。
-lXm -lXt -lSM -lICE -lXpm -lXext -lX11 -lm
とか必要なライブラリ全てを記述しなくても
-lXm
だけでOKでした。
何か指定したライブラリ(この場合 /usr/lib/libXm.so.2.0.1) の依存ライブラリを調べてリンクしてくれるようですが、これって昔からそうだったのでしょうか?
10年近く前は、一つでも指定を忘れると駄目だったので、よく知らないライブラリも呪文のように指定していたような記憶があるのですが。
ビルドした時刻をバイナリに埋め込みたいんだけど
なんかいい方法ある?
最後にリンクするときに日時がわかるものを埋め込みたい
なんかいい方法ある?
最後にリンクするときに日時がわかるものを埋め込みたい
__DATE__,__TIME__を初期値にしたグローバル変数だけの
オブジェクトをリンクごとに生成して埋め込めば?
オブジェクトをリンクごとに生成して埋め込めば?
質問!
Linux@i386(IA-32)のgccでC言語とアセンブラを組み合わせて使っています。
ebx, esi, ediは通常ならcallee-saveですが、
アセンブラ側の都合でcaller-saveとして扱わなければならない箇所があります。
今はmanを参考に-fcall-used-~オプションを付け
プログラム全体でcaller-saveとして扱っています。
関数ごとにcallee-save, caller-saveを切り替えて速度を稼ぐことは可能ですか?
可能なら方法を教えてください。
Linux@i386(IA-32)のgccでC言語とアセンブラを組み合わせて使っています。
ebx, esi, ediは通常ならcallee-saveですが、
アセンブラ側の都合でcaller-saveとして扱わなければならない箇所があります。
今はmanを参考に-fcall-used-~オプションを付け
プログラム全体でcaller-saveとして扱っています。
関数ごとにcallee-save, caller-saveを切り替えて速度を稼ぐことは可能ですか?
可能なら方法を教えてください。
ああ、でも callee-save 環境から caller-save 環境を
どう呼び出かってのがあるね。どうやってたかな…。
どう呼び出かってのがあるね。どうやってたかな…。
すまん、ちょっとよく覚えてない。多分 hook を挟んで
どうにかしていたと思う。
ただ 個別に -fcall-used-REG を保守するのも段々面倒
になってきて、最後は「えいや」で setjmp ばりに保存
する hook にしちゃった気がする。
どうにかしていたと思う。
ただ 個別に -fcall-used-REG を保守するのも段々面倒
になってきて、最後は「えいや」で setjmp ばりに保存
する hook にしちゃった気がする。
教えてください
gccでjavaの練習をやろうと思うのですが、
gcc -vで
--enable-languagesにjavaが含まれていれば大丈夫でしょうか
gcj -vだとcommand not foundになります
gccでjavaの練習をやろうと思うのですが、
gcc -vで
--enable-languagesにjavaが含まれていれば大丈夫でしょうか
gcj -vだとcommand not foundになります
どうしても gcj を使わなければならないという理由がないのなら
Sun の JDK をインストールして勉強しれ。
# command not found に対処できない人が使えるようなものじゃないから…
Sun の JDK をインストールして勉強しれ。
# command not found に対処できない人が使えるようなものじゃないから…
レストン
もう少しgccを触って駄目だったらJDK逝きます
もう少しgccを触って駄目だったらJDK逝きます
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / gcc スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- GCCについて part8 (763) - [95%] - 2009/3/11 8:47 ☆
- GCCについて part10 (538) - [90%] - 2018/7/5 20:30
- 【激遅】AppleGCC【絶望】 (111) - [18446744073709551607%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について