スペース区切りの float 行を含む大量のファイルの処理を伴うシナリオでは、ボトルネックはファイル アクセスにないことがよくあります。ただし、解析プロセス中です。
この質問では、ストリーム演算子 (>>) を使用した連続抽出を伴うテクニックが紹介されています。これは効率的ですが速度が制限されます。さらに、文字列分割関数である strtok についても言及されていますが、float へのさらなる変換が必要です。
Boost Spirit、特にその文法ベースのパーサーは、次のことを証明しています。このタスクには最適な選択肢です。データ検証、エラー報告、および空白の柔軟性を驚くべき効率で処理します。
質問者が実施した広範なベンチマークにより、Boost Spirit が他のすべての代替手段よりも優れていることが明らかになりました:
【性能比較表の画像】
C 14 を使用している場合、更新されたベンチマークで実証されているように、実験的な Spirit X3 はさらに高速です。
以下のコード スニペットはブーストを示しています。指定された行フォーマットを解析するためのスピリット実装:
bool ok = phrase_parse(f, l, (double_ > double_ > double_) % eol, blank, data);
以上がBoost Spirit は C でのスペースで区切られた Float 解析をどのように高速化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。