[過去ログ] 次世代が造った言語 blawn (460レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
293(3): 2019/11/01(金)14:33 ID:Am2UW0G2(1) AAS
コンパイル速度が速いと本人が言っていると小耳に挟んだが、実は:
1. WindowsとC++の組み合わせの場合、必須となる windows.h ヘッダだけで、コメントを除いた状態で数えても
1万8,000行程度あり、*.cpp ファイルで書いたプログラム本体より、windows.h ヘッダ
の解析に時間ががかっている。そのために pre-compiled heaeder 技術を VC++ は使っている。
だから、windows.h やその相当品を読み込まない状態で Blawn をテストした場合、
WindowsとC++の組み合わせとは解析している行数が全く異なるためコンパイラの速度比較
としては公平とは言えない可能性が高い。
2. 例えば、VC++のコンパイラは、pre-compiled header を使った場合、現在のエントリモデルのCPUでも、
1ソース当り 30(ms)程度でコンパイルを終える。pre-compiled header
を使わない場合は、100(ms)程度。
3. Blawnが字句解析に用いているflexは正規表現で字句解析をするので根本的に遅くなる。
例えば、windows.h はバイト数が 1MB程度もあるので、字句解析で 1文字当たり1クロック使うと、
0.3(ms)程度時間がかかる。もし、字句解析部分が1文字当り100クロック使ってしまうと、
それだけでVC++のトータルコンパイル時間に達してしまうことになる。
それだけに、字句解析は未だに1クロックで泣き笑いをする分野である。そこに、
手書きコードより効率の悪い flex を使っている時点でコンパイル速度は望めない。
ちなみに、new, delete を組み合わせて使うだけで、300クロックかかってしまうので、
ヒープメモリの使用も控えるのに越したことは無い。
4. C++ には、#define マクロや、#if, #else, #elif, #endif などでの前処理もできる。
これは見落とされがちだが実は重要。ここも字句解析ほどではないが、1クロックに
泣き笑いをする分野である。Blawnには前処理層が無いから、VC++などと速度の単純比較は出来ない。
5. BlawnはバックエンドにLLVM処理用にclang系を使っている。これは、VC++に比べると
遅い。なので、トータルで見たとき、flexを使わずに手書きしたとしても、LLVM
を使っている段階で、VC++のコンパイル速度に勝つことは最初からほぼ不可能。
上下前次1-新書関写板覧索設栞歴
あと 167 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.008s