grammar.yファイルを使用してCパーサを生成するためにbisonとflexを使用しました。これは約10秒で正しくコンパイルされます。 C++出力を得るために私のバイソンとフレックス引数を変更しましたが、正しい結果が得られましたが、文法のCPP結果をコンパイルして出力するのに約1分かかりました。 誰でもこの問題を解決するためのアイデアはありますか? 文法ファイルは約6000行です。bisonとlex文法の作成が遅い
0
A
答えて
1
C++コードの複雑さによっては、C++コンパイルが糖蜜として遅くなることはよくあることです。 C++コンパイラには、多くの作業が含まれています。 Cコンパイラよりも多くの作業が必要です。私はいくつかのC++コードを持っており、数分かかると、RAMのギグに近い、噛み付く。
bisonが6000行ルールセットから吐き出すロボで生成されたLALR(1)パーサーでは、それはまったく予想外の結果ではありません。パーサーからの実行時パフォーマンスが重要でない場合は、ロボ生成文法ファイルの-O最適化オプションを削除することで、スピードアップできます。おそらく少し速くなるでしょう。
また、コンパイラを更新することもできます。最近のリリースでは、gccの性能が顕著に向上しています。古いgccを使用している場合は、改善が見られるかもしれません。
ようこそC++。
関連する問題
- 1. LexとYacc/Flexとbison構文エラー
- 2. パーサー(lex/yacc)の作成方法は?
- 3. C/Bison文法エラー
- 4. LexとYaccでのコメントの作成
- 5. Bison文法の警告
- 6. Flex/Bisonの文字列を出力するインタプリタを作成する方法
- 7. YaccとLex "構文エラー"
- 8. yacc/bisonとlexでどのように再帰的ルールを作るべきですか?
- 9. Django:クエリが遅れていてインスタンスの作成が遅い
- 10. URLのAmazon Lex Slotタイプを作成する方法
- 11. lexでオープンエンドスロットを作成するには
- 12. ポストグルのスキーマ/テーブルの作成が遅い
- 13. AWS Connect - Lex Bot統合遅延
- 14. qt作成者のデバッグが遅い
- 15. 構文エラーlex yacc
- 16. Bisonのカスタム構文エラー
- 17. geditのlexの構文ハイライト
- 18. bisonとflexでCalcが動作しないネガ
- 19. HTMLの簡単なBison文法が必要です
- 20. bisonでグローバルパラメータを作る方法++ ++
- 21. LexとAlexaの違い
- 22. Lex/Flex - EOF文字のスキャン
- 23. lex - /と\のエスケープ文字を一致させる方法\
- 24. Bison文法を小さな文法ファイルに分割する
- 25. bison文法の文字列とはどのように一致しますか?
- 26. ビジュアルスタジオのyaccとbison
- 27. LexとYaccはコンパイラを作る?
- 28. yacc/bison/ANTLR文法に基づいてランダムであるが有効な式を生成する
- 29. この文法の助けを借りて、BisonのXMl
- 30. ElasticSearch:多くのマッピングが存在するときのマッピングの作成が遅い
私はC++プログラマーではないが、プリコンパイル済みヘッダーのMSVCの概念を理解している(プリコンパイラはすべてのクラスをアセンブルする)ので、文法ファイルの外側ですべての型/クラス定義を保持すれば、クラスアセンブリとしてのコンパイルは変更されませんか? –
@PaulOgilvie:あらかじめコンパイルされたヘッダーは、Bison/Lexコンパイルとほとんど差がない可能性があります。 –