Контент


Как работают счетчики в Gmail и Nigma?

Сегодня в очередной раз обратил внимание на счетчик обрабатываемых русскоязычных страниц, показываемый в поисковике Nigma. Количество страниц бодренько нарастает, вот и стало интересно, как это реализуется.

Код разочаровал, если честно. Просто прибавление числа 57 к текущему значению счетчика каждую секунду:

function countit () {
	var tmp = parseInt(document.getElementById("doccounter").innerHTML.split('`').join('')) + 57;
	tmp = tmp.toString();
	document.getElementById("doccounter").innerHTML = tmp.substr(0,1) + '`' + tmp.substr(1,3) + '`' + tmp.substr(4,3) + '`' + tmp.substr(7,3);
	setTimeout("countit();", 1000);
    }

Из принципа решил сравнить с механизмом Google (наверняка видели, как на главной странице почтовика бегают цифры доступного места в ящике). Там все оказалось несколько сложнее. Для начала загружается переменная с данными о доступном пространстве на определенные моменты времени:

// Оценки nanite хранения поколения с течением времени.
var CP = [
 [ 1199433600000, 6283 ],
 [ 1224486000000, 7254 ],
 [ 2144908800000, 10996 ],
 [ 2147328000000, 43008 ],
 [ 46893711600000, Number.MAX_VALUE ]
];

Как видно, только первые два замера являются реальными, 10Гб пространства нас ждут только в конце 2037 года. Зато еще через месяц вместо 10 станет аж 43Гб (интересно, откуда такие цифры у Гугла?). Ну и напоследок формула, по которой расчитывается пространство:

function updateQuota() {
//...
// i хранит номер строки ближайшей к текущему времени метки времени в массиве CP
    var ts = CP[i - 1][0];
    var bs = CP[i - 1][1];
    quota.innerHTML = format(((now-ts) / (CP[i][0]-ts) * (CP[i][1]-bs)) + bs);
    setTimeout(updateQuota, 1000);
//...
}

В общем, любопытно. Вспомнился пост на Хабре о расчете времени подачи такси.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Опубликовано в гуляя по сети.

Теги: , .


Один комментарий

Будьте в курсе обсуждения, подпишитесь на RSS ленту комментариев к этой записи.

  1. Артем пишет:

    Хорошая интригующая и разоблачающая статья))



Можно включить подсветку кода: <code><pre lang="">...</pre></code>
Разрешены некоторые HTML теги

или используйте trackback.