Skip to content

Instantly share code, notes, and snippets.

@yuinore
Last active December 12, 2017 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuinore/543d895d18214bb7ac44283af7afd17f to your computer and use it in GitHub Desktop.
Save yuinore/543d895d18214bb7ac44283af7afd17f to your computer and use it in GitHub Desktop.
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<div id="result"></div>
<script>
//var CORRECT_SIZE = 454852;
var CORRECT_SIZE = 9053584;
function aaa() {
$.get("statistics.csv", function(csv_raw) {
var csv = csv_raw.split("\n").filter(x => !!x).map(x => {
x = x.split(",");
return {
"date_init" : x[0],
"date_start_conn" : x[1],
"route" : x[2],
"time_total" : x[4] - 0,
"time_connect" : x[5] - 0,
"time_appconnect" : x[6] - 0,
"time_pretransfer" : x[7] - 0,
"size_download" : x[9] - 0,
"url" : x[11]
};
});
var sum = {};
var count = {};
//var region = ["China", "Japan", "Germany", "Russia", "United Kingdom", "US CA", "US NY", "US TX"];
var sorted = {};
for(var i in csv) {
var obj = csv[i];
if(obj.size_download != CORRECT_SIZE) { continue; }
if(!sorted[obj.date_init + "$" + obj.url]) {
sorted[obj.date_init + "$" + obj.url] = {}
}
sorted[obj.date_init + "$" + obj.url][obj.route] = obj;
}
for(var j in sorted) {
var sg = sorted[j];
if(!sg["direct"] || !sg["proxy"] || !sg["proxy_to_remote"] || !sg["local_to_proxy"]) {
sorted[j] = {}; // discard
}
}
for(var j in sorted) {
for(var rt in sorted[j]) {
var obj = sorted[j][rt];
// 分類なし
//var gid = "0";
// 国内vs海外
var gid = obj.url.indexOf(".jp") >= 0 ? "Japan" : "Overseas";
// サーバーごと
//var gid = obj.url.split("/").slice(0,3).join("/") + "/";
if(!sum[gid]) { sum[gid] = {}; }
if(!count[gid]) { count[gid] = {}; }
if(!sum[gid][obj.route]) { sum[gid][obj.route] = 0; }
if(!count[gid][obj.route]) { count[gid][obj.route] = 0; }
sum[gid][obj.route] += (obj.time_total - obj.time_pretransfer);
count[gid][obj.route] += 1;
}
}
var s0 = "";
for(var gid in sum) {
s0 += "-------- " + gid + " --------\n";
var sg = sum[gid];
s0 += "ratio = " + sum[gid]["direct"] / sum[gid]["proxy"] + "\n";
for(var name in sum[gid]) {
s0 += name + " : "
+ Math.round(CORRECT_SIZE / 1024 / (sg[name] / count[gid][name]) * 100) / 100
+ " kB/s (N = " + count[gid][name] + ")\n";
}
}
console.log(csv.length);
document.getElementById("result").innerText = s0;
});
}
setTimeout(aaa, 100);
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment