サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
essen.osask.jp
(1) プログラミング言語(コンパイラ)で最適化というと、「静的単一代入(SSA)形式への変換」などの難しいイメージが先行して、もはや普通のプログラマは手出しせずにLLVMに任せてしまうのが普通になってしまった感じがします(私の思い込みかもしれませんが)。 そのためにLLVMをバックエンドに選ぶ人もいるくらいです。 しかしHLXで最適化についてあれこれと実験してみた経験から言うと、最適化処理はそれほど難しいものではありません。いや難しくしようと思えば難しくできそうですし、そうすればもっと高度な最適化ができそうですが、でもそこまではできなくても、たいていは十分に役立つのです。 どうにかしてその「感じ」をうまく伝えたいです。 ↑ (3-1) コンパイル時に答えが確定しているものは、定数に置き換えてしまう。 これは簡単です。 a = 1 + 2 + b; みたいなのがあれば、 a = 3 + b
(註)「.exeの大きさ」はWindows向けにgcc(MinGW)でコンパイルした時の大きさです。 しかしここで扱う言語処理系は、Windows専用というわけではなく、他のOSでも問題なく動作するようになっています。 純粋に言語処理系の規模の目安を示すために書いてあります。 基本的には小さければ小さいほどシンプルで、教材として理解しやすいと思っています(可読性を下げてまでのコンパクト化をやらないとして)。 行数を書いているのも同じ意図です。行数だけだと、1行の文字数をうんと増やすことで、見かけ上の行数を減らすことができますが、そんなことをしても実行ファイルサイズは減らないので、 この二つを併記すれば、規模感の目安としては十分だと思っています。 「速度のめやす」は、C言語で10億回ループさせた場合と、この言語で10億回ループさせた場合の処理時間の比を書いています。数が大きいほうが遅いです。
このページを最初にブックマークしてみませんか?
『essen.osask.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く