速いしスケールする並列CSVパーサ作った紆余曲折話

年の瀬にどうしてもCSVを並列にパースしたくなって、PartialCsvParserというC++のライブラリを作った。

  • 1スレッドでも高速だし複数スレッドで使うとちゃんとスケールする
  • ヘッダファイルだけインクルードすればコンパイルなしで使える
  • パブリックドメインなので自分のリポジトリに git add とかしてもおk

という3拍子揃ったやつです。

細かいことはプロジェクトのページを見ていただくとして、ブログには頑張ってベンチマークとった話と、全然スケールしなかったのに2行追加しただけでグンと並列性能が上がった話を書く。

続きを読む


真・SSEを使って8flops/clockを実現する

カーネル/VM Advent Calendar の34日目として書きます.
記事の内容自体はこのイベントと関係ありませんので,どなたでもお楽しみ下さいませ.

今回は 自分の前回の記事 で見つけた誤りを訂正しつつ,
Intelの一部CPUがサポートするSSE(Streaming SIMD Extensions)命令により1clockで8個の単精度浮動小数点演算を行なう方法を紹介します.

なるべく前回の記事とは独立した記述を心がけます.

続きを読む



perf stat でパフォーマンスカウンタの値を直接指定し表示

perfについて少し

最近のLinuxでは,perfという便利なパフォーマンス解析ツールが使えます.
aptやyumなどのパッケージ管理ツールで入れられると思いますが(Debian系だとlinux-tools*って名前のパッケージのはず),詳しい使い方はここでは解説しません.

さて,このperfには色々な使い方がありますが,中でもperf statはプログラム実行中に起こるハードウェア的なイベントを取得できるものです.
使用例はこんな感じ.

続きを読む