2015-01-01から1年間の記事一覧

RustとSBCLでのDAWG構築性能の比較メモ

Rustの勉強を兼ねて、cl-dawgというDAWGのCommon Lisp実装を移植して、rust-dawgというライブラリを作ってみた。 (DAWGは末尾部分を共有可能にしたトライの亜種。上記ライブラリでは、そのトライ木をDoubleArray形式で表現している。DAWGやDoubleArrayの構築…

Emacsのファイル保存時に自動的にrustfmtが適用されるようにする

コードフォーマッタによる整形がファイル保存時に自動で行われるようにするための手順メモ。 まずはrustfmtをインストール: # バージョン $ rustc -V rustc 1.5.0 (3d7cd77e4 2015-12-04) # インストール $ cargo install rustfmt $ export PATH=$PATH:$HOME…

現在時刻をUNIXタイムスタンプ形式で取得する

chronoというライブラリを使えば出来そう。 $ cargo new sample --bin $ cd sample $ echo -e '\n[dependencies]\nchrono="*"\n' >> Cargo.toml main.rsを修正: // src/main.rs extern crate chrono; use chrono::offset::local::Local; use chrono::duratio…

loglevelとseverityの使い分けメモ

自分用のログレベル関連の用語整理メモ。 loglevel、severity、severity level、をどう使い分けるか。 ここに書いてあることが一般的に正しい使い分けかどうかは不明。 severity は、その名の通りログメッセージの深刻度を表す。 その数値表現が severity le…

特定オプション指定時にdialyzerのメモリ消費量が異様に大きくなる

--get_warningsと-Wrace_conditionsの二つのオプションを合わせて指定すると、何故かメモリ使用量が大きくなってしまう模様。 例えば、以下のコマンド実行時には、メモリ使用量が途中で8GB(RAMサイズ)に達してしまい、PLTを構築することができなかった。 (上…

素数列生成

素数列の実装方法を考えてみたのでメモ。 基本的にはエラトステネスの篩と同じようなことを行っているはずだが、一度に保持する篩の範囲が(おそらく)必要最小限となっている。 (一つの既知の素数につき、ハッシュテーブル内の一つの枠しか消費しない) // fil…

Rustで関数型っぽい見た目のペアリングヒープを実装

Rustでペアリングヒープを実装してみたのでコードをメモとして残しておく。 無駄に関数型っぽい見た目の実装(selfを使わずに更新結果を戻り値で返す)となっている。 最低限のテストは書いたが正しく動作するかどうかは自信がない。 効率周りも無頓着。 // $ …

yumのパッケージ(rpm)をダウンロードする方法

yumdownloaderというコマンドを使えば、インストールは行わずにパッケージのrpmだけを取得できる模様。 # yumdownloaderのインストール $ sudo yum install yum-utils # vimのrpmを取得 $ yumdownloader vim Loaded plugins: fastestmirror Loading mirror s…

優先度付きキュー系モジュールのベンチマーク

『Purely Functional Data Structures』(略:PFDS)で紹介されている優先度付きキュー(+ α)をいくつか実装してみたので、その性能測定メモ。 なおPFDSは(データ構造がヒープ特性を満たしているかどうかに関係なく)優先度付きキュー群をまとめてヒープと呼称し…