タグ

ブックマーク / frsyuki.hatenablog.com (5)

  • デシリアライズ速度の比較 ByteBuffer vs DirectBuffer vs Unsafe vs C - Blog by Sadayuki Furuhashi

    OpenJDK や Hotspot VM には sun.misc.Unsafe という内部APIがあり*1、これを使うと ByteBuffer.getInt や ByteBuffer.getLong よりも高速にバイト列から整数値をデコードできるという。これを駆使することで、Cで実装された拡張ライブラリに匹敵する速度を出せるらしい。 それが当なら、データ圧縮やハッシュ関数、シリアライザ/デシリアライザなどの実装を高速化できる。例えば、lz4 や xxhash のJava実装が Unsafe API を使用している*2:jpountz/lz4-java Prestoも、中間データのシリアライズ/デシリアライズにはすべて Unsafe API を使っている*3。 そこで、実際にベンチマークしてみた。 ベンチマーク内容 10MBのランダムなバイト列を生成する 先頭から1バイト読み出す その1バ

    デシリアライズ速度の比較 ByteBuffer vs DirectBuffer vs Unsafe vs C - Blog by Sadayuki Furuhashi
    taroleo
    taroleo 2014/03/12
  • ブラウザから1クリックでアプリケーションを起動する - Java Web Start 〜 JavaFX - Blog by Sadayuki Furuhashi

    festivoice.netはブラウザから1クリックで専用のクライアントソフトウェアが起動して、簡単に音声チャットが始められます。この1クリックでアプリケーションを起動する仕組み - Java Web StartはJavaに標準で搭載されているので、大抵の環境でインストールする手間を掛けることなくクライアントを配布できます。 またサーバーに置いてあるパッケージを更新するとクライアントも自動的にアップデートされます。Webサービスの提供者側からすると、Java Web Startはかなり便利です。 Java Web Startを利用するには、サーバー上に 1)普通のJavaのアプリケーション と、2) JNLPファイル を用意します。JNLPファイルはXMLの設定ファイルで、以下のようなフォーマットになります: <?xml version="1.0" encoding="UTF-8"?> <

    ブラウザから1クリックでアプリケーションを起動する - Java Web Start 〜 JavaFX - Blog by Sadayuki Furuhashi
    taroleo
    taroleo 2009/02/25
  • Key Value Store勉強会に行ってきました by kumofsのひと - Blog by Sadayuki Furuhashi

    ※分散Key-Valueストア「kumofs」を公開しました! 先日開催されたKey Value Store勉強会に行ってきました。私の発表資料は↓ここからダウンロードできます。 kvs-kumofs.pdf 合わせて読むと理解が深まるかもしれない: スマートな分散で快適キャッシュライフ - mixi Engineer's Blog:Consistent Hashについて バイナリシリアライズ形式「MessagePack」:kumofsのプロトコル。高速なストリームバッファとストリームデシリアライザの実装も含まれています。 Protocol Buffersは遅い:MessagePackのベンチマークとProtocol Buffersとの比較。タイトルは釣り。 memstored:IOアーキテクチャのプロトタイピング マルチコア時代の高並列性IOアーキテクチャ Wavy memcached

    Key Value Store勉強会に行ってきました by kumofsのひと - Blog by Sadayuki Furuhashi
    taroleo
    taroleo 2009/02/23
  • WikiForme 0.5 開発裏話 1 - Blog by Sadayuki Furuhashi

    ブログに書いている時点で裏ではないんじゃないか。 昨日リリースしたWikiForme 0.5の開発と実装について。「WikiFormeのココが普通じゃない」という話。 構造化Wiki記法 これがWikiFormeの最重要ポイント。Wiki記法で書かれた文章をツリー構造に起こしてから、各種出力フォーマットに変換する。 普通のWiki記法は構造化しないので、通常は完全にフラットか、1段階くらいネストしたフォーマットにしか出力できない。これが「箇条書きの中に表を入れる」とか「番号付きリストの中に箇条書きを入れる」というような、複雑にネストした構造が書けない理由でもある。 しかしそれも当然で、そもそもWiki記法自体がネストした構造を書けないようになっている。Wiki記法は行頭にマークを付けることでテキストを整形するので、基的に「1行=1要素」とした1対1の対応でしか整形できない。「!=見出し」

    WikiForme 0.5 開発裏話 1 - Blog by Sadayuki Furuhashi
  • Blog by Sadayuki Furuhashi

    MessagePackフォーマット仕様のPull Request #209をマージし、MessagePackにTimestamp型を追加しました。 ※この記事の英語版は XXX にあります(翻訳中) Extension型の型コード -1 として定義されているため、後方互換性が維持されています。つまり、既にExtension型に対応しているデシリアライザであれば、Timestamp型を使用して作成されたデータを、Timestamp型に対応していない古いデシリアライズで読み出すことができます。 新しいTimestamp型には timestamp 32、timestamp 64、timestamp 96 の3つのフォーマットがあり、よく使う値をより少ないバイト数で保存できるようになっています。例えば、1970年〜2106年までの時刻で、秒までの精度しか持たない時刻であれば、合計6バイトで保存でき

    Blog by Sadayuki Furuhashi
  • 1