タグ

ブックマーク / tanakh.hatenablog.com (2)

  • Rustでメモ化を行うためのシンプルなライブラリを作った - 純粋関数型雑記帳

    TL;DR 一行追加するだけで関数をメモ化するマクロを作った。 成果物はこちら https://docs.rs/memoise/ 背景 同じ引数に対して同じ値を返す関数(いわゆる参照透明だったり数学的だったりな関数)では、 関数の計算結果を保存しておくことによって計算を高速化したりすることができます。 このようなテクニックを関数のメモ化(memoise, memoize, memoization)などと呼びます。 特に再帰的に定義される関数についてメモ化を行うことによって、 動的計画法の実装をシンプルで直感的なものにできたりします。 しかし、関数のメモ化はやりたいことが自明なのにもかかわらず、 毎回手で書いていると微妙に面倒だったり、うっかりメモ化忘れで計算量が爆発してしまったり、 ちょっと辛いところがありました。 特にRustを使っていると、グローバル変数を雑に使うことを許して貰えないの

    Rustでメモ化を行うためのシンプルなライブラリを作った - 純粋関数型雑記帳
    hiroomi
    hiroomi 2020/02/01
  • SSD向け全文検索エンジン - 純粋関数型雑記帳

    ここのところ私がメインでかかわっていた検索エンジンがリリースされました。 こちらに紹介があります。 http://d.hatena.ne.jp/kzk/20090310 デモとしてWikipediaの全言語(記事が少ない言語は省かれているかも)の全記事 約50GBからの検索を1台のPCで行うものが公開されています。 よかったら試してみてください。 http://demo.sedue.org/wikipediasearch/ 下の方でいくつか数字を出していますが、 正確に計ったわけではないので参考程度にしてもらえると。 ちょこっと宣伝 ボックスに単語を入れると検索できます。 一応、全言語で検索するデモなので、各言語での検索は 全言語の検索結果をフィルタしているだけです。 単語の列を入れると、AND検索できます。 検索速度のデモなので、結果のキャッシュなどはしていません。 すべてのクエリについ

    SSD向け全文検索エンジン - 純粋関数型雑記帳
    hiroomi
    hiroomi 2009/03/11
  • 1