分岐命令なしに 256 ビット整数の下位 k ビットの population count を求める
複数ワードで構成される一つの整数の下位 k ビットに対する population count を分岐命令なしに実現する方法について Java で考えてみました。
複数ワードで構成される一つの整数の下位 k ビットに対する population count を分岐命令なしに実現する方法について Java で考えてみました。
極力手軽に実現する方法についてメモしています。
Xor+ filter を実装するために、ランク辞書の一種である Rank9 を Java で実装したメモです。
ブルームフィルタの代替手段として利用できうる Xor filter を Java で実装して アーティファクトを Bintray で公開しました、というお話です。
(Google) Guava のブルームフィルタ実装 で String オブジェクトを効率よく扱う方法のメモです。
Gradle で管理されている Spring Boot アプリケーションのバージョン情報などをアプリケーションコードから動的に参照できるようにするためのメモです。
一般公募の枠で CfP 出してあえなくリジェクトされたテーマを、スポンサー枠で勝手に敗者復活させてお話してきました。
5 分で話しきれずあえなく時間切れの憂き目にあった資料の供養を兼ねたエントリです。
Fork/Join Parallelism in the Wild の論文を読んだメモです。
Jackson や Java における zlib 関連クラス、zlib そのものの内部実装を把握しながらスループットの最適化を試みるお話です。
java.util.Random#nextInt(int bound) 相当の乱数生成を高速化しました、というお話です。
Java 11 がリリースされてはや 1 ヶ月が経ち、また Java 8 のサポート終了を数カ月後に控えたいま、Java 11 以降の Docker イメージとしてどれを選ぶべきなのかを考えてみます。
Google Kubernetes Engine (GKE) 上で稼動させている Java アプリケーションのログをいい感じに Stackdriver Logging で閲覧できるようにするメモです。
盲目的に --add-modules の JVM オプションで解消するのはやめて、Java 11 に備えてちゃんとした対処をしてみよう、というお話です。
いまの仕事とはまったく関係ない内容で JJUG CCC 2018 Spring でお話してきました。
Java アプリケーションを Docker コンテナ上で実行しようとしたときに、ベースイメージとしてどの Docker イメージを選ぶのがよいかを考えてみます。
openjdk:9-jdk など一部の OpenJDK の Docker イメージにて InvalidAlgorithmParameterException の例外が発生する問題に遭遇したので、その解決方法をメモしておきます。
ベンダー非依存のインタフェースを提供する micrometer を使って、メトリクスを計測して外部のサービス (具体的には Datadog) に送信する方法のメモです。
「何気ない str.getBytes(Charset.forName("UTF-8")).length が、JVM を傷つけた」とならないように、String オブジェクトを任意の文字エンコーディングでエンコードしたときのバイト数を、文字列の長さに依存しない (すなわち定数オーダーの) 空間計算量で算出する方法を...
OffsetDateTime#parse() が "2017-01-02T12:34:56.001+0900" のような文字列を解析できないことに腹を立てたのでこのメモを書き殴った。反省するつもりはない。
先日の エントリ にて Maven central リポジトリのインデックスを利用する話題を取り上げたので、今回はそのインデックスを具体的に Java で読み込み、走査する方法についてメモします。
第二十回 #渋谷java で、Maven central repository 上の artifact に対して依存関係の有向グラフを作り PageRank でランキングしてみる、というお話をしてきたメモです。
JJUG ナイト・セミナー 「ビール片手にLT&納涼会 2017」 で、無理矢理 Java に絡めて確率的データ構造の話をしてきたメモです。
ベイズ統計における「信用区間」の一つである最高事後密度区間 (Highest posterior density interval, HPDI) について、その区間を求める方法を調べて Java で実装してみたメモです。
滅多なことがなければ使うことはないだろうけど、Commons Math の BrentOptimizer クラスを使って一変数の関数を最適化 (最小化 or 最大化) する方法をメモしておきます。
今回は commons-math3 の BetaDistribution#sample() より 最大で 4 倍以上速い ベータ分布に従う乱数生成器を実装しましたよ、というお話です。
TL;DR: ガンマ分布に従う乱数生成器を Java で実装し、Commons Math の実装と比較して 最大で約 16 倍 (任意の形状パラメータの乱数を生成する場合) の速度効率を達成しましたよ、というお話です。
fast-rng に実装した 指数分布 (exponential distribution) に従う乱数生成器についてのメモです。
xgboost-predictor 0.1.8 をリリースしたのでメモを残しておきます。
TL;DR: Java の java.util.Random#nextGaussian() や java.util.concurrent.ThreadLocalRandom のそれよりも 3 倍 以上速い正規乱数生成器 (正規分布に従う乱数生成器) を実装してみたよ、というお話です。
Java において JSON を読み書きするライブラリといえば、いまや Jackson がデファクトスタンダードかと思います。今回はこの Jackson をハイパフォーマンスに扱う方法について、第十七回 #渋谷java で発表してきました (発表資料はこのエントリの最後に掲載しています)。
今年の 3 月ごろ に、OS X 上で XGBoost をビルドする方法についてメモを残していましたが、最新版の XGBoost ではビルド方法がまたちょこっとアップデートされているようなので、改めてメモを残しておきます。