精密な演算結果を要求されない場合の分散処理について考えてみる

公開日: : 最終更新日:2014/02/04 未分類

風呂上がりにちょいと考えごと。以下のようなコードを考えてみる。


def func1(param)
# do something
end
def func2(param)
# do something
end
result = func1(func2(param))

func1が1秒、func2が1秒かかるとしたら、この処理には約2秒かかるはず。次に、この処理をクライアントとサーバーで分散することを考える。


# client side
def func2(param)
# do something
return result
end
result = server->func1(func2(param))

# server side
def func1(param)
# do something
return result
end

server sideがclient sideの10倍高速だとすると、この処理には(約1秒 + client->server転送時間 + 約0.1秒 + server->client転送時間)だけかかる。なので、転送時間によってはすべてclient sideで処理したほうが速いかもしれない。

ここで、この処理における条件を考える。

  • この処理を秒間100回ほど実行する
  • paramはリアルタイムに変化する
  • resultをリアルタイムに求めたい
  • 精密な結果は求めない。大体合っていれば良い

「大体合っていれば良い」ので、以下のようなコードを考えた。


# client side
def forecast2(param)
# forecast result of func2
return forecast_result
end
def func2(param)
# do something
return true_result
end
result = server->forecast1(forecast2(param))

# server side
def forecast1(param)
# forecast result of func1
return forecast_result
end
def func1(param)
# do something
return true_result
end

func1とfunc2は専用のスレッドで動作していて、最新のparamを元に、常にresultを演算している。resultの履歴はメモリサイズに応じて、ある程度残しておく。func1やfunc2が呼ばれた際には、resultの履歴を元に、現時点でのresultを予測し、返す。この方式であれば、精密な結果ではないが、paramの変動が大きくなければそれなりの結果をリアルタイムに取得できるはず。paramが大幅に変動しても、func1やfunc2からの演算結果が履歴に追記されてくれば、forecast1やforecast2から返ってくるresultは、現時点での精密な演算結果を追従してくれるはず。

分かりづらいので図を書いて考えをまとめようと思ったけど、今日は寝る。

TODO

id:nyaxtのlibpolatskについて調べてみる。

関連記事

no image

【モノマネ】エコーのかかったジャイアンの歌声

これはすごい! よく思いつくな・・・。

記事を読む

no image

今日は私の結婚式でした

特定の宗教にとらわれない人前式という形式で行いました。 参加者の皆さんにも楽しんでいただけたし、

記事を読む

f:id:akio0911:20070610200256j:image

フューチャリスト宣言

最近読んでる本

記事を読む

no image

涼宮ハルヒ第13話を見ました

涼宮ハルヒ第13話を見ました。 いやぁ、本当に原作に忠実に作られている感じですねぇ。 次回で最終

記事を読む

no image

iPhoneシューティング

弾をPhotoshopで描いてみたけど、微妙・・・。

記事を読む

ゴマダンゴ

記事を読む

no image

ホームページビルダーとdreamweaver

ホームページビルダーの使い方を勉強しています。 テキストエディタによるタグ打ちに比べればリンクの管

記事を読む

no image

ラーメン二郎マップ

原因が分かった。 >GDownloadUrlのコールバック関数と 

記事を読む

プログラミングRuby 第2版 言語編

第7章「式」を読んだ

多重代入は少々ややこしいな C/C++を使い慣れた僕としてはunlessはあんまり使い

記事を読む

プリンター市場 キヤノン8年ぶり首位

プリンター市場 キヤノン8年ぶり首位 あのスクエアなデザインは格好いいですからねー。

記事を読む

20140714-144729.jpg
サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

アップルの開発者向けイベント「WWDC2014」に参加するため

slooProImg_20140714064146.jpg
ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

slooProImg_20140713230358.jpg
十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

slooProImg_20140712085918.jpg
大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

20140625-114250.jpg
ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑