challenge 分散関数呼び出し

分散関数呼び出しを実装してください.

呼び出される関数は,定価を整数で,割引率(%)を整数で受け取り,
文字列で「販売価格 ○円(定価○円から○%引き)」を返すものとします.
また,数字は3桁のカンマ区切りにするものとします.

たとえば,pricestring(2000, 20) なら
"販売価格 1,600円 (定価2,000円から20%引き)"
を返します.

関数の呼び出し元と,呼び出される側は,物理的に異なる
サーバに配置できることを条件とします.
呼び出し方法は問いませんが,呼び出し方法に名前がある場合,
それをタグに加えてください.
(XML-RPC,SOAP,CORBA,RMI,など)

また,作成した関数を直列に1万回呼び出して,
実行にかかった時間を測定してください.
測定時は別サーバでなくても構いません.
(なるべく別サーバが望ましいです)

測定環境として,
・サーバとクライアントのCPU・メモリ
・同一サーバ内での実行か別サーバでの実行か
・別サーバの場合,通信経路.(100Mbps Ethernet等)
・言語のバージョン
・ミドルウェアを使用している場合,その名前とバージョン
も併記してください.

1つの言語で複数の分散関数呼び出しの実装方法がある場合,
複数の回答を歓迎します.

出題の意図は,様々な分散呼び出し方法の実装例と,
レスポンス速度の確認にあります.
このお題は沢渡 みかげさんの投稿です。 まったく手を加えないでいい完成度の投稿で本当に助かります。 ありがとうございました。

Posted feedbacks - JavaScript

テキストのみの通信にしちゃいました。 CPU 2.8G MEM 1G WinXP Pro IIS

で実行したところ、 こんな感じです。

販売価格 1,600円 (定価2,000から20%引き) st=1196494169386 et=1196494432558 10000回:263.172秒かかってまっせ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--HTML(doukaku.html)
<html>
    <meta http-equiv="Content-Type" content="text/html; charset=sjis">.
    <body>
    <script>
        var st = new Date().getTime();
        var ajax = false;
        if(typeof ActiveXObject != "undefined"){
          try       { ajax = new ActiveXObject("Microsoft.XMLHTTP"); }
          catch (e) { ajax = false; }
        }
        if(!ajax && typeof XMLHttpRequest != "undefined")  ajax = new XMLHttpRequest();
        var i = 0;    
        for(i = 0; i < 10000; i++){
            ajax.open( 'GET','doukaku.asp?x=2000&y=20', false );
            ajax.send( );
            txt = ajax.responseText;
        }
        var et = new Date().getTime();
        document.write('<div>' + txt + '</div>');
        document.write('<div>st=' + st.toString() + '</div>' );
        document.write('<div>et=' + et.toString() + '</div>' );
        document.write('<div>' + i.toString() + '回:' +  (et - st) / 1000 + '秒かかってまっせ。</div>' );
        </script>
    </body>
</html>

--SV側(doukaku.asp)

<%@ Language="JavaScript" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">.
<%
var q = Request.QueryString;
function getPricestring( x, y ){
  x = x - 0; y = y - 0;
  return "販売価格 " + f( ( x * ( 100 - y ) / 100 ) ) + "円 (定価" + f(x) + "から" + y + "%引き)";
  function f( x ){
    return x.toString().split('').reverse().join('').replace(/(\d{3})/g, '$1,').split('').reverse().join('');
  }
}
%>
<%=getPricestring(q('x'),q('y'))%>

Index

Feed

Other

Link

Pathtraq

loading...