Javascript でアップロード速度テストを書いています。Jquery (および Ajax) を使用してデータのチャンクをサーバーに送信し、応答を取得するのにかかる時間を計っています。これは、理論的には、アップロード速度の見積もりを提供するはずです。
もちろん、ユーザーのさまざまな帯域幅に対応するために、しきい値の期間に達するまで、ますます大量のジャンク データを順次アップロードします。現在、次の関数を使用してジャンク データを生成していますが、メガバイトのデータを生成すると非常に遅くなります。
function generate_random_data(size){
var chars = "abcdefghijklmnopqrstuvwxyz";
var random_data = "";
for (var i = 0; i < size; i++){
var random_num = Math.floor(Math.random() * char.length);
random_data = random_data + chars.substring(random_num,random_num+1);
}
return random_data;
}
実際に私が行っているのは、サーバーに送信するバイトのチャンクを生成することだけですが、これが Javascript で方法を見つけることができる唯一の方法です。
どんな助けでも大歓迎です。
更新: コードを書き直して、完全にランダムな文字列ではなく、10 バイトの文字列を繰り返すようにしました。
function generate_random_data(attempt){
var table = {
'1':10, //10kb
'2':12, //40kb
'3':14, //160kb
'4':16, //640kb
'5':18, //2.5Mb
'6':20 //10Mb
}
var random_data = "abcdefghij"; //10 bytes
for (i = 0; i < table[attempt]; i++){
random_data += random_data;
}
return random_data;
これで、関数は試行回数の引数を受け取ります (スクリプトが最初にアップロードを試みると、最小のファイルが実行され、次に最小のファイルが実行されます)。次に、10 バイトの文字列を取得し、目的の長さに達するまでそれを自分自身に追加し続けます。
これが最善の方法ですか?より良い方法はありますか?