簡易回線速度ベンチマーク2
あなたの接続環境がどの位の回線速度か簡易的に求めます。
下のボタンをクッリクして速度を計ってみてください。
測定に用いる画像を変更するオプションを追加しました。高速回線の方は大きい方の画像も試してみてください。

測定用画像1(129,693 Byte)
測定用画像2(262,678 Byte)


計測時間(単位:Sec)
回線速度(単位:KByte/Sec)
回線速度(単位:KBit/Sec)

Script解説
結構重ための画像を読み込ませ、読み込みが完了するまでの時間を計測して回線速度を求めています。
読み込み完了のイベントは画像のonloadイベントで取得できます。
時間は読み込み開始時と終了時に、
time = (new Date()).getTime();
で時間を取得しその差で求めます。
画像サイズを時間差で割って1000を掛けたのが回線速度(Byte/sec)になります。

Script
  //初期化
  function init(){
    document.images["img1"].onload  = stop_timer;
    document.images["img1"].onerror = error;
    document.images["img1"].onabort = abort;
    st_flg   = 0;//計測中フラグ(0:未計測;1:計測中)
    line_flg = 0;//回線オプション(0:通常;1:高速)
    
    //測定用画像リスト設定
    ImageList = new Array();//(ImageList[line_flg] = "画像パス:画像サイズ")
    ImageList[0] = 'bench.jpg:129693';
    ImageList[1] = 'bench2.jpg:262678';
  }
  
  //計測開始
  function start_timer(){
    if (!st_flg){
      st_Time = (new Date()).getTime();
      st_flg = 1;
      document.form1.text1.value="";//フォームクリア
      document.form1.text2.value="";//フォームクリア
      document.form1.text3.value="";//フォームクリア
      document.images["img1"].src = ImageList[line_flg].split(':')[0]+"?"+ Math.random();//キャッシュ防止
    }
  }
  
  //計測終了
  function stop_timer(){
    if (st_flg) {
      end_Time = (new Date()).getTime();
      time = (end_Time - st_Time)/1000;
      var ImageSize = eval(ImageList[line_flg].split(':')[1]);
      document.form1.text1.value = format(time,3);
      document.form1.text2.value = format(ImageSize/1024/time,3);
      document.form1.text3.value = format(ImageSize/1024/time*8,3);
      st_flg = 0;
    }
  }
  
  //桁揃え
  function format(val,digit){//val:数値;digit:桁
    for (i=0;i<digit;i++) {
      val *= 10.0;
    }
    val = Math.round(val);
    val += "";
    if (digit) {
      val = val.substring(0,val.length-digit) + "." + val.substring(val.length-digit,val.length);
    }
    return(val);
  }
  
  //読込み失敗時処理(動作しない環境が多い...)
  function error(){
    if (st_flg) {
      alert('計測失敗!!\nもう一度計測してみてください。');
      st_flg = 0;
    }
  }

  //読込みキャンセル時処理
  function abort(){
    if (st_flg) {
      alert('計測キャンセル!!\nもう一度計測してみてください。');
      st_flg = 0;
    }
  }

簡易回線速度ベンチマーク2
HomePage :JavaScriptの部屋別館
E-Mail    :blaze@gol.com
最終更新日 :2001/05/24