Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
現行のC++版をベースにして,極力標準ライブラリを使用する,というレギュレーションを外してみた(外部ライブラリを積極的に採用した)バージョンです(現行の
cpp
とは別に追加しています).ある種の参考にはなるかと思いますがレギュレーションを意識して破っているという点で公平さには欠けるため,ベンチマークに含める(マージする)かどうかは思索ください.主要な変更点としてg++
にfast_io
がg++
の方が性能が出やすいためfast_io
を使用debug
の分岐に[[unlikely]]
を付記std::vector
からBoost.Containerのものへ変更boost::container::vector
はコンテナ伸長時のreallocationにrealloc
相当の機能を使うことで要素の移し替えコストの削減が期待できます.boost::container::small_vector
は指定した要素数まではメモリ確保無しに(自身のメンバとして直接)値を保持します.boost::container::vector
の要素として大量のboost::container::small_vector
を使用しているため,通常のstd::vector
やboost::container::vector
などと比べてメモリのローカリティが大幅に上がり,キャッシュヒット率の向上が期待できます.4
を指定することで非常に高い実行効率を得られます.