Erlang で分散 Key-Value Storage を書いているのだがデータの insert で思うように速度が出ていない。get の 10 倍ほど遅い。 ログを見た印象と直感的には insert の際の lock が競合しているのではないかと思われたがプロファイルをとってみたらボトルネックは lock ではなかった。 まず始めに Erlang 付属の fprof でプロファイルをとったがゴミデータばかりで肝心の事は何も分からなかった。 gen_server は末尾再帰ループなので余計に出力が見にくい。さらに数千プロセス分のログが出るので分からない。ML でも gen_server と fprof の相性は良くないという投稿が見受けられた。 色々ググっていたところ、Erlang 製のAmazon Dynamoクローン「Dynomite」の開発者がブログで dynomite_prof
こんにちは、kojingharang です。仕事でErlangを使い始めてそろそろ2年になります。 家でPCをいじっているときはだいたい 馬場タクシー3D や 他のアプリ を作っていますが、最近区切りが良くてちょっと暇になったので、アドベントカレンダーに乗っかって Erlang の記事を書いてみます。 対象読者 Erlang の軽量プロセスやクラスタサポートは気に入っているが、その他のいろいろについて、もやっとした不満がある方 要約 こんな流れです。ここだけ見て「もう分かったよ」という方は、続きは見なくても大丈夫です。 足し算するモジュールを書こう それを gen_server 化しよう 冗長な記述をしなきゃいけなくて面倒だしバグがでそうだ そこで、面倒な記述を parse_transform で自動生成する fun_injector というのを作ったよ 冗長な記述が減ってハッピー! 考察
Posted on 2017-07-27 How learning Elixr made me a better Ruby developer I write more functional code, avoid mutating data and side effects in methods, do not shy away from (modern) concurrency primitives, I explored alternative deployment options. Quick intro I write Ruby code for living since 2007/2008, so you may call me a veteran (or a combatant if it pleases you). Along the way, I wrote some J
並行性(コンカレンシー)に関するElixirの抽象化を見てきましたが、さらなる制御が必要になることもあります。そうした時のために、Elixirに組み込まれているOTPの振る舞いに目を向けます。 このレッスンではGenServerという重要な要素に焦点を当てます GenServer OTPサーバーは一連のコールバックを実装するGenServerの振る舞いをもったモジュールです。 最も基本的なレベルでは、GenServerは単一プロセスであり、更新された状態を伝える反復処理のたびにに1つのメッセージを処理するループを実行します。 GenServerのAPIを実演するために、値を格納し読みだす基本的なキューを実装します。 GenServerを始めるには、起動し、初期化処理を行う必要があります。 ほとんどの場合、プロセスをリンクしたいので GenServer.start_link/3 を用います。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く