No.3
- 回答日時:
古い(さらに細かい)話ですと、より実効コストの低いコードをはき出すという手段がありました。
例:変数(CPUのAXレジスタ)を0にする場合
MOV AX,0 # 普通の考え方
XOR AX, AX # ちょっとひねった考え方
上の二つのコードはどちらもAXを0にしますが、CPUによって動作完了までのクロック数が違ったりします。
最近のCPUでは予測分岐やパイプラインといった、より複雑な機能で速度差が生じますので上の例ほど簡単ではありません。
後はマルチメディア系によく使われる浮動小数点演算などの専用拡張命令をどう使うかなども含まれるかもしれません。
参考URL:http://ja.wikipedia.org/wiki/MMX
お礼が遅くなって、どうもすみません。
早速のご回答、どうもありがとうございました。
動作の結果が同じでも内部動作の効率が違うことがあるのですね。参考になりました。
No.2
- 回答日時:
今どきだと, 最適化レベルを間違えなければ gcc でも icc でもそんなに速度は違わない気がする. gcc では O0, icc では O2 がデフォルトの最適化レベルなので, このことを無視して「icc でコンパイルしたコードは gcc でコンパイルしたコードより速い」ということはできるけど, 実際には gcc でも O2 でコンパイルすると icc とほとんど変わらなかったりします. 確かにちょっとだけ icc の方が速かったけど, 非常に細かいアーキテクチャの違いまで組み込める分 icc の方が有利かなぁ, くらいの差だったような気がする.
まあ, icc だと「ループが消える」とか「関数がごっそり消滅する」とかいう, 恐ろしい「最適化」がかかることもあるらしい.
お礼が遅くなって、どうもすみません。
早速のご回答、どうもありがとうございました。
ループや関数が消えたりするというのは、どっちも展開してしまっているんでしょうかね。gccは汎用だけど、linuxに限ればCPUで圧倒的なシェアを持っているインテルCPUに照準を合わせているところがあっても不思議ではない気がしてきました。
No.1ベストアンサー
- 回答日時:
参考になりそうなのはこれかな。
http://homepage1.nifty.com/bee/bkey/optimize.html
最適化/値が変化しない参照の除外 辺りからそんな話が出てくるよ
コンパイラによって吐くコードが若干違うけれど、より速くなったりする形で出してくれるって話だよね
お礼が遅くなって、どうもすみません。
早速のご回答、どうもありがとうございました。
教えていただいたページ、まさにこういう事を知りたかったので、大変参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード パソコンでCPUとメモリー、優先は? 11 2023/01/11 17:19
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- アプリ iPhone処理速度について 最新iPhoneからcpu性能どれだけ上げでもあまりアプリを開く速度が 3 2023/02/07 03:48
- CPU・メモリ・マザーボード パソコンの性能を引き出すために 4 2022/12/29 17:05
- Android(アンドロイド) このスマホのCPU速度を教えて欲しいです。 3 2022/08/01 07:03
- CPU・メモリ・マザーボード CPU の性能の違いについての質問です。 3 2023/04/24 20:27
- iPhone(アイフォーン) iPhone、パソコンのストレージ書き出し読み込みがメモリーddr4くらい早くなったら性能でアプリ、 2 2023/03/20 17:28
- 計算機科学 科学計算においてワークステーションを使うのはなぜ? 7 2023/02/16 19:21
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++ で、「)」が必要 というエ...
-
0除算して、落ちるプログラムと...
-
ABAQUS ユーザーサブルーチン...
-
io.hをincludeしたプログラムで...
-
関数の返す値で直接Bitをセット...
-
Linux/Unix系C言語...
-
PL/SQLで、区切りのスペースは...
-
変数(関数)名の頭に_
-
fortranでのNaNについて
-
IntelのMKLをC++で使用したいの...
-
コンパイルできない
-
Vba 実数および実数タイプの変...
-
VBAで仕様書は書きますか?
-
正しい五十音順について
-
VBAにてメール作成した際、一部...
-
あるプログラムのコマンドライ...
-
C言語(gcc), Linux, FTPプログ...
-
パックマンプログラム
-
Notepad++の関数リスト表示でC...
-
VBAが止まります。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++ で、「)」が必要 というエ...
-
コンパイルできない
-
C++でアボート(Abort)で処理が...
-
変数(関数)名の頭に_
-
Visual C++とVisual C++.NETの違い
-
Eclipseの環境設定について
-
volatile修飾について
-
コンパイラについて
-
linuxのセキュリティ対策と致し...
-
__extension__
-
io.hをincludeするとそのような...
-
コンパイラフラグ(compiler fla...
-
PICマイコンによる乱数の表示に...
-
conio.h? curses.h?
-
【エラー】Cpadで初めてコンパイル
-
ABAQUS ユーザーサブルーチン...
-
関数の戻り値による変数の初期化
-
Delphiの逆コンパイル
-
プリコンパイラとは?
おすすめ情報