タグ

開発とCに関するthaimのブックマーク (2)

  • Big Sky :: C言語から使えるJSONパーサ、JSMNを試してみた。

    上記の様に、トークンは各識別毎に作られます。オブジェクトのキーおよび値もそれぞれのトークンとして格納されます。 jsmn_parse はトークンの量が不足している場合、エラー JSMN_ERROR_NOMEM を返します。例えば、どれだけの量のトークンが JSON 文字列として与えられるか分からない場合、トークンのサイズを広げる必要があります。この場合、jsmn ではパーサを再初期化する事なしに、トークンを広げて再度 jsmn_parse を実行する事でパースを続行出来る様になっています。 ただしどれだけの量が不足していたかは分からないので、適度な増減を考慮する必要があります。 今日は試しに twitter のパブリックタイムラインをパースしてみました。 #include <assert.h> #include <string.h> #include <memory.h> #include

    Big Sky :: C言語から使えるJSONパーサ、JSMNを試してみた。
  • 高速化に効くシステムコールが犠牲にするもの

    前回、mmap(2)というシステムコールを使って、ファイルコピーの速度を上げる方法を解説しました。このシステムコールは大きな問題を起こすこともないので、使いやすく、実際に多くの開発者が利用しています。今回は、プログラムが使用した物理メモリサイズやページフォールトの回数、コンテキストスイッチの回数などを調べて、mmap(2)の性格を分析していきます(編集部) 前回とは違う側面からmmap(2)を調べる 前回、ファイルをコピーするためのシステムコールの一種である「mmap(2)」を紹介した。このシステムコールを使えば、「read(2)」や「write(3)」といったシステムコールを使うよりも高速に動作するファイルコピープログラムを作れる。処理にかかった平均時間を比較したところ、mmap(2)を利用したプログラムは、read(2)/write(2)を使ったプログラムの4〜5倍高速に動作していた。

    高速化に効くシステムコールが犠牲にするもの
  • 1