.NET против PHP - тесты.

Статус
В этой теме нельзя размещать новые ответы.

thingol

Новичок
>Ты не согласен с тем, что замерять T1+T2 с клиента более правильно, чем TT - с сервера?

Не согласен, из-за описанных мной проблем при добавлении константы (см. пост про "темный и сложный" ).

В идеале надо мерять сниффером, стоящим на веб-сервере разницу между приходом пакета с запросом страницы и уходом первого (или последнего?) пакета со страницей.
 

[VS]

Guest
По поводу скорости. Плиз поправьте меня далее если я не прав:

При написании на ASP.NET при вызове большинства функций, у нас будет происходить вызов функций COM сервера. (кто-то это называет ActiveX, хотя это не совсем то). Например, для парсинья регов (насколько я понимаю) в ASP.NET мы
1 - создадим COM обьект обратившись к программе-серверу или воспользуемся уже созданным.
2 - выполним функцию рега.

Может конкретно с регами и не так, но большинство функций именно так вызывается.

Так вот, это происходит через COM интерфейс IDispatch, который довольно тормозной. В любом случае, мне это кажется более медленным чем вызов функции, которая присутствует в PHP.

Вот сравнение скорости этого мне интересно, причем интересно опять-же не в случае единичного скрипта гоняемого локально, а в случае client<->server с большой нагрузкой.
 

thingol

Новичок
[VS] - ура, спасибо за конструктив. Сейчас Exc прокомментирует.
 

Mammoth

Guest
>Не согласен, из-за описанных мной проблем при добавлении константы (см. пост про "темный и сложный" ).

Млин, есть такой научный метод - допущение. Например, физики, расчитывающие скорость падения тела, не учитывают сопротивление воздуха...
 

thingol

Новичок
2Mammoth:

это из канала:

<kukutz> tony2001 - ab даст нам T1+T2 (см термины в форуме).
<kukutz> Если T1 мало то T1+T2 = T2
<tony2001> да
<kukutz> и наш тест ничего не тестит
<tony2001> запускай локально для апача
<tony2001> или сервера
<kukutz> tony2001 - тогда где взять ab для винды?
<tony2001> с апачем идет
<kukutz> tony2001 - не идет
<kukutz> tony2001 - не шле полгода назад, по крайней мере

Понимаешь?
 

[VS]

Guest
С Апачей 2 идет, можно от туда взять и использовать с нормальной Апачей.
 

thingol

Новичок
К тому, что если мы меряем T1+T2, то надо подбирать значение T1 аккуратно, исходя из каких-то "реальных задач".

Впрочем, мы с tony2001 уже нашли ab под windows, и поэтому можно мерять только T1 (если пренебречь издержками на использование TCP/IP-стека).
 

exc

Guest
Про время формирования страницы:
TS - время формирования ответа сервером, включает:
-> TS1 - время, необходимое на подготовку к выполнению кода (например, загрузки CGI-приложения) - т.е. длина интервала между приходом запроса на сервер и появления первой возможности отправки байта ответа сервера.
-> TS2 - время работы кода страницы (от окончания TS1 до отправки последнего байта ответа клиенту)

TC - время формирования страницы клиентом, включает
-> TC1 - прохождения запроса от клиента к серверу
-> TS
-> TC2 - время прохождения последнего байта ответа от сервера к клиенту.
-> TC3 - дополнительное время до окончания формирования страницы клиентом.

Все зависит от целей:
1) Если мы тестируем сам компилятор\интервпетатор (C#, PHP - чем я и занимался) - нам интересно только время TS2
2) Если же задаче стоит в тестировании системы в целом (т.е. в том числе и web-сервера) - то в тест нужно включить и время TS1, остальные малоинтересны.

Теперь немного о TS2 и TS1:
Для ASP.NET в TS1 входит время создания потока и нескольких сервисных объектов. Что происходит в PHP при этом (кроме создания потока и контекста выполнения скрипта со всеми $_GET, $_POST и т.д.) - мне точно не известно.
Именно это время и нужно сравнить.

В TS2 в PHP без ZendAccelerator входит время загрузки и компиляции в pCode. В ASP.NET - компиляция (->IL->Native) и загрузка идет только в первый раз, в последующем происходит только выполнение Native-кода. А насколько быстро выполняется C# (as Native code) & PHP - я уже сравнил.
 

thingol

Новичок
Подитожим?

Тесты запускаются на Win/IIS/ASP.Net и Linux/Apache1/php+Zend Accelerator (и без него отдельно) при помощи запускаемой на этом же компьютере ab (1000 вызовов каждой страницы теста).

Все согласны?

Возникает вопрос, нет ли у кого DualBoot системы с W2k и linux? Потому что без нее эти тесты не провести.
 

thingol

Новичок
2Exc - да, мы пришли к одинаковым выводам, какое время надо мерять, если стоит задача (2), а все в форуме интересна именно она.

Только, плз, давай сейчас без цифр не утверждать ничего типа "я это уже мерял". Мы с тобой не знаем, сколько создаются "сервисные объекты" и т.п..
 

exc

Guest
Автор оригинала: [VS]
По поводу скорости. Плиз поправьте меня далее если я не прав:

При написании на ASP.NET при вызове большинства функций, у нас будет происходить вызов функций COM сервера. (кто-то это называет ActiveX, хотя это не совсем то).
Нет, .NET очень редко обращается к сервисам COM. RegExp-ы в .NET - Native .NET Classes, не COM.
 

thingol

Новичок
Подитожим-2 или Подитожим возвращается.

Давайте тогда еще и сформируем список страниц АКА тестов, которые надо прогнать.

Про регекспы мы поняли. БД мы трогать не будем, это отдельная песня. Можно чтение файла разных размеров, но тут проблема в выборе функции в php, которой читать. file() гораздо быстрее построчного чтения.
 

[VS]

Guest
Автор оригинала: exc
Нет, .NET очень редко обращается к сервисам COM. RegExp-ы в .NET - Native .NET Classes, не COM.
Может я это путал с просто ASP (не .NET) ?

Ок, но работа с базами - через ADO Или OLE DB - т.е. все-равно через COM?
 

[VS]

Guest
Очень верное замечание из #PHPClub

<Clainor> tony2001: я вот про топик php vs .net добавил, что php надо тестить на *nix платформе, на винде он "малость" медленней работает...
<Clainor> не добавил, а добавил бы...
 

[VS]

Guest
А Ado.NET не вызовет тот-же самый COM сервер и будет сам коннектиться к базе?
 

exc

Guest
Автор оригинала: [VS]
Может я это путал с просто ASP (не .NET) ?

Ок, но работа с базами - через ADO Или OLE DB - т.е. все-равно через COM?
Нет, для SQL Server в .NET есть Native-провайдер. Для ADO & OLE DB - оболочки.
 

thingol

Новичок
Summary - ищется dualboot-машина с W2k srv и linux/apache для проведения КОРРЕКТНЫХ тестов.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху