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

公開日: : 最終更新日: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

職種と手帳の関係

想いと表現の間 - 手帳のサイズまとめ実際に使ってみると、1週間を見渡せるクオバディスは進行管理向き

記事を読む

no image

実世界はてなスターボタンで実現したいのは「気軽なUI」

僕が好きなのは、はてなスターの「☆を押すだけ」というUIの気軽さです。 そして、位置に対してス

記事を読む

no image

ポン・デ・ライオン

記事を読む

no image

はじめに習慣を作るのは私たちだが、その後は習慣が私たちを作る。

6月16日(木曜)の日記 「はじめに習慣を作るのは私たちだが、 その後は習慣が私たちを作る。

記事を読む

キムキムさんと飲み&ラーメン

今日の撮影にてアシスタントをして頂いたキムキムさんと 撮影終了後横浜鳥元へ飲みに行きました。 今

記事を読む

no image

コメント入力の制限を解除しました

#先日は設定をミスっていたようなので、 #再度設定を行いました。 #以下、先日のエントリの再掲載

記事を読む

五目おこげ

記事を読む

no image

サイボウズラボについて調べつつ、自分のミッションと抱えている問題点について考えてみた

サイボウズラボについて、ふと気になったので調べてみた。 販売費および一般管理費においては、

記事を読む

ゴシック&ロリータではない撮影

ゴシック&ロリータではない撮影 先日行ったゴシック&ロリータではない撮影の様子。雑誌で言うとグラマラ

記事を読む

no image

PASMOの使えないバス

京成バスってPASMO使えないのね(;´Д`)面倒くせぇ

記事を読む

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

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

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

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

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑