sileのブログスマートフォン用の表示で見るsileのブログこの広告は、90日以上更新していないブログに表示しています。2016-05-29RustでMD5ハッシュを計算するRust別に難しくはないけど、いざ使いたいという時に方法を忘れてしまっており、何度か調べ直しているのでメモに残しておく。以下のようにrust-cryptoを使えば実現可能。Lisp実装を移植して、rust-dawgというライブラリを作ってみた。(DAWGは末尾部分を共有可能にしたトライの亜種。上記ライブラリでは、そのトライ木をDoubleArray形式で表現している。DAWGやDoubleArrayの構築方法自体に関しては、過去に何度か記事を書いているのでここでは省略する)両者の性能比較を軽く行ったので、ここにその結果メモを残しておく。52.13s)二分木構築に要した時間はcl-dawgの方が、DoubleArray構築に要した時間はrust-dawgの方が、短くなっている。その辺りの条件を合わせれば、おそらく合計でもcl版の方が速い結果となると思う。GCに要した時間を除外したとすればcl-dawg(SBCL)の方がだいぶ良好な結果となっている。4.622GBメモリ消費量に関しては、(GC無し言語とGC有り言語の比較なので当然と言えば当然だが)Rust版の方が半分以下の消費量となっている。感想rust-dawgのメモリ消費量に関しては期待通り。二分木構築部分の処理時間は、cl-dawg(SBCL)の「非GC部分の時間+α」くらいに収まってくれるかと予想していたが、意外と振るわない結果となった。GC不要」な分だけ実行時のコストを安く出来ても良いはずなのに、とは思う。(ただし、GC不要と言いつつrust-dawg内では(GCの一種と見做せなくもない)RCモジュールは多用されている)特に直近でやる予定はないけど、気が向いたら何が原因で速度差が生じているのかの特定を行ってみたいかもしれない。08:11RustとSBCLでのDAWG構築性能の比較メモTweet広告を非表示にするもっと読むコメントを書く2015-12-18Emacsのファイル保存時に自動的にrustfmtが適用されるようにするRustコードフォーマッタによる整形がファイル保存時に自動で行われるようにするための手順メモ。#'rustfmt-enable-on-save)完了。03:01Emacsのファイル保存時に自動的にrustfmtが適用されるようにするTweet広告を非表示にするもっと読むコメントを書く2015-11-11現在時刻をUNIXタイムスタンプ形式で取得するRustchronoというライブラリを使えば出来そう。自分用のログレベル関連の用語整理メモ。level、をどう使い分けるか。ここに書いてあることが一般的に正しい使い分けかどうかは不明。その名の通りログメッセージの深刻度を表す。深刻度が高いほど値は小さくなる。実際に出力されるログメッセージを指定するための閾値であり、指定されたレベル以下のメッセージが出力されることになる(レベルが上がるほど出力範囲が増える)。個々のメッセージに紐付くもので、loglevelはそれらの出力を担当するロガーに指定するもの。16:32loglevelとseverityの使い分けメモTweet広告を非表示にするもっと読むコメントを書く2015-08-20特定オプション指定時にdialyzerのメモリ消費量が異様に大きくなるErlang--get_warningsと-Wrace_conditionsの二つのオプションを合わせて指定すると、何故かメモリ使用量が大きくなってしまう模様。以下のコマンド実行時には、メモリ使用量が途中で8GB(RAMサイズ)に達してしまい、PLTを構築することができなかった。/tmp/dialyzer.pltOTP17.5およびOTP18.0で現象が発生することを確認。stdlibを対象アプリケーションに指定した場合も同様の傾向が見られたので、アプリケーション固有という訳でもなさそう。dialyzerのバグのような気もするので原因を特定して修正した方が良いのかもしれないが、自分の使用用途では--get_warningsを指定しなくても特に困ることはないので、とりあえずはその方向で回避する。Rust素数列の実装方法を考えてみたのでメモ。基本的にはエラトステネスの篩と同じようなことを行っているはずだが、一度に保持する篩の範囲が(おそらく)必要最小限となっている。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。