以前作成したC++のJSONパーサの高速化試行。 C++のデフォルトのnewは、小さいサイズのメモリを大量に割り当てるのが遅いということは有名(?)なので、JSONパーサ用に、専用のallocatorクラスを作成することにした。 今回作成したallocatorクラスのテンプレートとしては、『C++編(標準ライブラリ) 第28章 アロケータ』にあるものを参照させてもらった。 メインのパーサの方のコードとまとめてしまおうかとも思ったのだが、allocatorクラスだけでもそこそこの量があるので、別々の記事として扱うことにする。 メモリ割り当て戦略 今回採用したメモリ割り当て戦略は以下の通り。 初めに、(ある程度)大量のメモリをまとめて確保(new)しておく。 割り当て要求がきたら、1で確保したメモリブロックの先頭から順に必要なサイズを渡す。 なお、既存のメモリブロックを使いきってしまった場合は