「CやC++の速度面における優位性は今後なくなる」という話

最適化には上限が存在する
25
Koichi Nakamura @9_ties

「CやC++の速度面における優位性は今後なくなる」というかむしろ他の言語に追い越されると思っているけど、ちゃんとその根拠を整理してみよう。

2011-05-20 00:25:27
Koichi Nakamura @9_ties

CやC++はメモリ最適化と自動並列化が他の言語に比べて難しいから、ヘテロジニアスマルチコア向けの最適化がうまくできないというのは良いと思う。で、ハードウェアがどの程度上手く自動化してくれるか?が問題。ここの効率が良いなら別に言語は何でも良い。

2011-05-20 01:05:17
Koichi Nakamura @9_ties

コンパイラの原則は「プログラムの意味を変えてはならない」⇔「依存関係にある命令の順番を変えてはならない」。つまり本質的には、除去が不可能な「真の依存関係」が実行速度の上限を与える。

2011-05-20 01:58:10
Koichi Nakamura @9_ties

C・C++は一次元メモリモデルで、ポインタ演算で任意の場所に読み込み・書き込みができる。よって、全く無関係な命令間に依存が発生してしまう。アドレス解析が不能な場合は真の依存と見なされてしまう。

2011-05-20 02:02:22
Koichi Nakamura @9_ties

constとかrestrictを使うとこれらの中でも特に厄介なエイリアシング問題は回避する事ができる。でも一次元メモリである限りは、根本的に解決は出来ない。

2011-05-20 02:04:42
Koichi Nakamura @9_ties

C,C++には正規化されたループが存在しない事もアドレス解析を難しくする一要因。

2011-05-20 02:06:16