2008-08-01から1ヶ月間の記事一覧

split/2 を再発明して、split_map/3 と split_foldl/4 を作った

ので、list_utils.erl に追加しました。 lists:split/2 は「lists:split(2, [1]).」とかやるとエラーになる為、ループで使い難いんですよね・・・。 list_utils:split/2 を利用した例として、list_utils:split_map/3 と list_utils:split_foldl/4 も list_ut…

rpc:parallel_eval/1 を使わない single node で動く pmap を作ってみた

kademlia 絡みで UDP 通信を並列で行ないたくなったので作ってみました。 送信元の IP アドレスやポート番号が異なると困るので、rpc:parallel_eval/1 は不使用です。 処理全体のタイムアウト処理と、ワーカーのタイムアウト処理を個別に指定可能です。 list…

lists モジュール、自前の関数、リスト内包表記の速度比較

検証コード gist: 6312 ― GitHub 感想 foreach 末尾再帰できなくても自前の関数の方が早い・・・コードの書き方が悪いのかな? lists:foreach/2 を使ったからといって、可読性が劇的に上がるわけでもないので、lists:foreach/2 は使うの止めよう。foreach に…

gen_X 系モジュールの code_change を appup とは関係なく呼ぶ

gen_server や gen_fsm 等が保持する State を、サーバ停止せずに(正確には suspend するけど)入れ替える方法のメモ。 OTP から逸脱している感があるけれど、Release Handling は無視の方向で(w; ちなみに、下記の内容を試す際は、こちら をどうぞ。まずは…

Erlang の関数を繰り返し実行するジョブ・スケジューラらしきものを作ってみた

udp_server に次ぐ、erlang による kademlia 実装の副産物その2。 定期的に関数を実行したかっただけなんですが、ファイル数が増えたので別プロジェクトにしてみました。 ジョブは起動時に supervisor 配下に置かれるので、落ちても再起動されます。 また、…