Непонятно как он тестировал, поэтому я решил провести полные нормальные тесты.
Результаты говорят сами за себя
Итак, в тестировании участвовали мой движок и движок Юны.
Методика тестирования весьма проста.
Мой движок работает с полной своей базой.
Движок Юны работает только с некоторыми основными таблицами.
Объем таблиц абсолютно одинаков, то есть я просто-напросто написал конвертер и вытащил данные из базы моего движка и запихнул и в базу движка Юны.
Список таблиц:
users, categories, torrents, snatched, peers, comments, thanks, indexreleases
Как мы видим, первые 5 таблиц (кроме categories) нам нужны для правильной работы с анносером. Остальные таблицы я взял для тестирования основных страниц трекера.
Напоминаю вам, что мой движок содержит на порядок больше полных таблиц, а движок Юны лишь эти и то, что было в базовой поставке.
Главная страница (index.php)
Мой движок - Время : 0.071s | 9 SQL-запросов
Движок Юны - Page generated in 0.177226 seconds with 31 queries
Скриншоты -
Комментарий - ой как замечательно, практически в два с половиной раза меньше время, а запросов то аж в 3 раза меньше. Наверное Юна бросил все силы экономии на анносер, а здесь расщедрился и дергает базу? Посмотрим дальше.
Обзор (browse.php)
Мой движок - Время : 0.063s | 11 SQL-запросов
Движок Юны - Page generated in 0.127398 seconds with 15 queries
Скриншоты -

Комментарий - И снова времени в два раза больше и запросов поболе будет.
Детали торрента (details.php)
Мой движок - Время : 0.117s | 15 SQL-запросов
Движок Юны - Page generated in 0.113067 seconds with 17 queries
Скриншоты -

Комментарий - Здесь Юна постарался. Сильно не проигрывает.
Детали пользователя (userdetails.php)
Мой движок - Время : 0.079s | 16 SQL-запросов
Движок Юны - Page generated in 0.176327 seconds with 20 queries
Скриншоты -

Комментарии - и опять время генерации страницы больше в 2 раза.
Итак, я рассмотрел 4 самых популярных страницы трекера. Как мы видим - ни на одной движок Юны не выигрывает. Лишь одной странице он более-менее подобрался к результатам моего движка.
Yuna писал(а):А то что в аннонсере ты отстаешь - это факт!
Да ну?
Итак, вот мои данные.
Вот простенький скрипт эмулирующий запрос к анносеру и получающий от него данные.
- Код: Выделить всё
<?php
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
function get_content($host, $get, $do_gzip = false) {
$filePointer = @fsockopen($host, 80, $errorNumber, $errorString);
if (!$filePointer)
{
exit('Failed opening http socket connection: '.$errorString.' ('.$errorNumber.')<br/>\n');
}
$requestHeader = "GET " . $get . " HTTP/1.1\r\n";
$requestHeader.= "User-Agent: Azureus 3.0.0.6;Windows XP;Java 1.5.0_06\r\n";
$requestHeader.= "Connection: close\r\n";
$requestHeader.= ( $do_gzip ? "Accept-Encoding: gzip\r\n" : '' );
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n";
$requestHeader.= "Content-type: application/x-www-form-urlencoded\r\n\r\n";
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do {
$responseHeader.= fread($filePointer, 1);
}
while ( !preg_match('/\\r\\n\\r\\n$/', $responseHeader) );
if (!strstr($responseHeader, "Transfer-Encoding: chunked")) {
while (!feof($filePointer)) {
$responseContent.= fgets($filePointer, 128);
}
}
else {
while ($chunk_length = hexdec(fgets($filePointer))) {
$responseContentChunk = '';
$read_length = 0;
while ($read_length < $chunk_length) {
$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
$read_length = strlen($responseContentChunk);
}
$responseContent.= $responseContentChunk;
fgets($filePointer);
}
}
return $responseContent;
}
$url = 'streamzone';
$ann_path = '/tracker/announce.php?';
$options = array(
'passkey' => 'а_вот_и_фиг',
'info_hash' => 'тут_хеш_торрента',
'peer_id' => '-AZ3006-5dmPcUOYGnrx',
'port' => 62742,
'uploaded' => 0,
'downloaded' => 0,
'left' => 1466483812,
'numwant' => 50,
//'no_peer_id' => 1,
//'compact' => 1
);
$get = '';
foreach ( $options AS $opt_name => $opt_value ) {
$get .= '&' . $opt_name . '=' . $opt_value;
}
$content = get_content($url, $ann_path . $get, false);
echo $content;
$mtime = explode(' ', microtime());
$totaltime = $mtime[0] + $mtime[1] - $starttime;
echo '<br />Time elapsed ' . $totaltime . ' seconds';
?>
В скрипте возможно выставить режим работы no_peer_id и compact для анносера, расскоментив строки
- Код: Выделить всё
//'no_peer_id' => 1,
//'compact' => 1
Также можно включить gzip если в строке
- Код: Выделить всё
$content = get_content($url, $ann_path . $get, false);
false заменить на true
А теперь собственно тесты.
Аннонсер
no_peer_id = 0, compact = 0, gzip = false, numwant = 50;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.01883602142334 seconds
Time elapsed 0.028856039047241 seconds
Time elapsed 0.028103113174438 seconds
Time elapsed 0.01825213432312 seconds
Time elapsed 0.028916120529175 seconds
Yuna
- Код: Выделить всё
Time elapsed 0.032582998275757 seconds
Time elapsed 0.041810035705566 seconds
Time elapsed 0.051044940948486 seconds
А тут после частых рефрешов анноснер Юны отвалился "d14:failure reason46:There is a minimum announce time of 10 secondse"
Time elapsed 0.039895057678223 seconds
Time elapsed 0.041121959686279 seconds
Ха. Где эти хваленые 9 тысячных на моем домашнем двухядернике?
Не смешите мои подковы.
Увеличиваем numwant до 200
TBDev SZ
- Код: Выделить всё
Time elapsed 0.034466028213501 seconds
Time elapsed 0.032328128814697 seconds
Time elapsed 0.022014141082764 seconds
Time elapsed 0.022618055343628 seconds
Time elapsed 0.031672954559326 seconds
Yuna
- Код: Выделить всё
Time elapsed 0.044363975524902 seconds
Time elapsed 0.051099061965942 seconds
Time elapsed 0.052750110626221 seconds
Time elapsed 0.055839061737061 seconds
Time elapsed 0.043964147567749 seconds
no_peer_id = 1, compact = 1, gzip = true, numwant = 200;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.023077011108398 seconds
Time elapsed 0.033427000045776 seconds
Time elapsed 0.03200101852417 seconds
Time elapsed 0.032360076904297 seconds
Time elapsed 0.033028125762939 seconds
Yuna
- Код: Выделить всё
Time elapsed 0.052780151367188 seconds
Time elapsed 0.042879104614258 seconds
Time elapsed 0.052810907363892 seconds
Time elapsed 0.052739143371582 seconds
Time elapsed 0.044113159179688 seconds
На 5k пиров у меня нет торрентов в базе, но если ты попросишь, то я специально сделаю, только вот боюсь результаты тебя очень расстроят.
Тестим scrape
запрос данных по одному торренту
gzip = false;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.022093057632446 seconds
Time elapsed 0.015882968902588 seconds
Time elapsed 0.022480010986328 seconds
Time elapsed 0.022791147232056 seconds
Time elapsed 0.022273063659668 seconds
Yuna
- Код: Выделить всё
Time elapsed 0.017014980316162 seconds
Time elapsed 0.017503976821899 seconds
Time elapsed 0.0076010227203369 seconds
Time elapsed 0.019254207611084 seconds
Time elapsed 0.016891956329346 seconds
gzip = true;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.014887094497681 seconds
Time elapsed 0.023932933807373 seconds
Time elapsed 0.023442983627319 seconds
Time elapsed 0.02347993850708 seconds
Time elapsed 0.023864030838013 seconds
Yuna
- Код: Выделить всё
Time elapsed 0.018429040908813 seconds
Time elapsed 0.0074069499969482 seconds
Time elapsed 0.017631053924561 seconds
Time elapsed 0.0071849822998047 seconds
Time elapsed 0.018033027648926 seconds
Скрейп, выдача данных для 50 торрентов
gzip = true;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.026051998138428 seconds
Time elapsed 0.025304079055786 seconds
Time elapsed 0.016488075256348 seconds
Time elapsed 0.025689125061035 seconds
Time elapsed 0.02673602104187 seconds
Yuna
Опа, а движок Юны мультискрейп-то и не поддерживает.
Ой как его наверное жаба и мюторрент долбят по скрейпу для каждого торрента
gzip = false;
TBDev SZ
- Код: Выделить всё
Time elapsed 0.016211032867432 seconds
Time elapsed 0.025017023086548 seconds
Time elapsed 0.024796962738037 seconds
Time elapsed 0.01518702507019 seconds
Time elapsed 0.024630069732666 seconds
Yuna
Опа, а движок Юны мультискрейп-то и не поддерживает.
Ой как его наверное жаба и мюторрент долбят по скрейпу для каждого торрента.
Далее в списке тест клинапа.
