古い記事
ランダムジャンプ
新しい記事
7年前に公開した「インターネットスピードチェッカー
(Internet Speed Checker)」[1]を書き直して再公開しておきます。
測定用の JavaScript + HTML を出力するだけの
CGI スクリプトです。当時ネットで見かけたスピードチェッカーの
コードを見てインスパイアされて作ったものです(≒パクリ)。
CGI スクリプトを置いた Web サーバとブラウザを使っている場所との
データ転送速度を測定します。正確な転送速度は測定できませんが、
だいたいの速度は分かると思います。

#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $q = new CGI;
my $kbytes = $q->param('datasize') || 100;
my @chars = map {chr $_} (0x20 ... 0x7e);
my $text;
for (my $j = 0; $j < $kbytes * 1000; $j++) {
    $text .= $chars[int(rand(@chars))];
}
$text =~ s/[<>!&]/./g;

print $q->header();
print << "EOS"
<html>
<head>
<title>Internet Speed Chacker</title>
</head>
<body>
<h1>Internet Speed Checker</h1>
<script Language="JavaScript">
  var DataSize = $kbytes;
  var startTime = new Date().getTime();
</script>
<!-- $text -->
<script Language="JavaScript">
  var endTime = new Date().getTime();
  var loadingTime = (endTime - startTime) / 1000; // sec
  function bps(s, t) {
    var b = s * 8; // byte to bit
    var r = b / t;
    if (r < 10) r = Math.round(r * 10) / 10
    else r = Math.round(r);
    if (r < 1000) return r + " k"       
    else return r / 1000 + " M";       
    return r;
  }
</script>

<table border="1">
<tr>
<td>Data Size</td>
<td><script>document.write(DataSize)</script> K bytes</td>
</tr>
<tr>
<td>Time</td>
<td><script>document.write(loadingTime)</script> sec</td>
</tr>
<tr>
<td>Speed</td>
<td><script>document.write(bps(DataSize,loadingTime))</script> bps</td>
</tr>
</table>

<form method="post">
Data Size <select name="datasize" >
<option value="100">100</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select> K bytes <input type="submit" value="Check!">
</form>
</body>
</html>
EOS
;

一時的にこちらから試せるようにしておきました。そのうち消えます。
http://nais.to/tmp/speed-check.cgi

[1] Internet Speed Checker
  http://ta2o.net/tools/isc/

なお、正確な速度測定はこちらが良いみたいです:
- スピードテスト/ブロードバンド通信速度測定サイト
  http://speed.rbbtoday.com/
  (via イーモバイルの通信速度[2007-08-06-1])