Почему это чудо написано на Perl'e а не на C++

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Почему это чудо написано на Perl'e а не на C++

Сообщение QnX »

Собственно сабж ? Сдается мне все тормоза из-за перла происходят. Он все-таки не этих задач предназначен. Из опыта, - не правильно написанный код "вывешивает" сервера не с одной парой процессоров.
Кто-нибудь задумывался переписать на других языках ?! Просто чем больше смотрю код, тем больше убеждаюсь в этом. [b]Извините за оффтоп.[/b]
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Вроде как это уже где-то обсуждалось...

Переписать?... переписывай. Перепиши ка 5 метров текста на другой язык.
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Некоторые чувствительные к производительности части openkore как раз написаны на си (в частности эмулятор padded-пакетов).. А вообще перл проще - нет утечек памяти, нестрогий контроль типов, никаких переполняющихся буферов.
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Сообщение QnX »

[quote="Kissa2k"]Некоторые чувствительные к производительности части openkore как раз написаны на си (в частности эмулятор padded-пакетов)[/quote]

Вот как раз ЭТО можно и на перле с ЭТИМ он справится, потому как писал демона который принимал, распаковывал, изменял, запаковывал и отправлял .... и обратно. Примерно так ~100000 пакетов в секунду и при том загрузка процессора была меньше 1 (Старая добрая Шапка).

[quote="Kissa2k"]А вообще перл проще - нет утечек памяти[/quote]

Ух ты. Просто за этим не нужно следить, .... но пару не обдуманых движений и УПС извини админ, что ночью сервер не отвечает ;)

[quote="Kissa2k"]нестрогий контроль типов, никаких переполняющихся буферов[/quote]
Согласен, но в С/С++ это проблема порингов (на нашем языке).

[quote="vit"]Переписать?... переписывай. Перепиши ка 5 метров текста на другой язык.[/quote]

В среде С/С++ не способен быть лидером, могу молоток держать ... гвозди подносить. Но опенсорс, он и в африке опенсорс людей знающих и увлекающихся много ... лидеров мало.
В.Высоцкий - "... настоящих буйных мало ... вот и нету мужиков ..."
Lims
Нууууп
Сообщения: 723
Зарегистрирован: Чт ноя 09, 2006 7:55 pm

Сообщение Lims »

QnX
раньше был бот на пхп :D
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Сообщение QnX »

Ммммммм..... т.е. мы развиваемся ! :Yahoo!:

PS: ох отправят меня парится за эту тему !
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Re: Почему это чудо написано на Perl'e а не на C++

Сообщение DInvalid »

QnX писал(а):Собственно сабж ? Сдается мне все тормоза из-за перла происходят. Он все-таки не этих задач предназначен.
Смешно. Вам сдается, что тормоза из за перла?
1) что за тормоза? где тормоза? что конкретно тормозит?
2) когда кажется - креститься надо, говорит народная мудрость

Вы уж извините за немного грубоватый тон, но в вашем посте нет ни обозначенной проблемы, ни каких либо уточнений почему это именно так.

А между прочим, в ОК есть встроенный бенчмарк, который показывает сколько времени затрачивает каждый блок.

Вы его смотрели?
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Хаха, забавные дискусии разводите тут, пахнет (даже воняет) троллингом. Давайте трезво оценем факты, язык программирования для своего проекта выбирает автор исходя из личных предпочтений, степени владения им, требованиями проекта например зачем писать веб-приложения на си или даже asm, когда с помощью php это делается гораздо проще и быстрее (хотя и менее производительно). Спорить какой язык лучше - это глупо и ничего не изменит, любите OK такой какая она есть =^_^=.
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Сообщение QnX »

[quote="Kissa2k"]любите OK такой какая она есть[/quote]
Я же очень .... респект и низкий поклон авторам ... первый раз за несколько лет игры дополз до 90+ лвл соло. Еще раз им респект ! Так же как Клику и Пирожку .... и всем остальным.

[quote]Смешно. Вам сдается, что тормоза из за перла?
1) что за тормоза? где тормоза? что конкретно тормозит? [/quote]
Очень просто хотя бы при телепорте (читать смена локации) - будете спорить, что есть тормоза ?! А сдается мне потому что он после этого перечитывает все подряд, начиная с места появления ... через статы и скилы ... и заканчивая окружающим(щими)

[quote]2) когда кажется - креститься надо, говорит народная мудрость[/quote]
Теперь про кажеться:
[b]Perl:[/b]
[code]
#!/usr/bin/perl


Test();
#print "End\n";
sub Test {
my $fw = 1000;
my $fh = 1000;
my ($lock_x, $lock_y, $lock_rx, $lock_ry) = ("" ,"", "", "");
my ($randX, $randY);
my $i = 500;
do {
$randX = int(rand($fw) + 1);
$randX = int($lock_x - $lock_rx + rand(2*$lock_rx+1)) if ($lock_x ne '' && $lock_rx ne '');
$randY = int(rand($fh) + 1);
$randY = int($lock_y - $lock_ry + rand(2*$lock_ry+1)) if ($lock_y ne '' && $lock_ry ne '');
} while (--$i && !isYes($randX, $randY));
}

sub isYes {
return 0;
}
[/code]
[b]C[/b]
[code]
#include <stdlib.h>
#include <stdio.h>

int isYes(int a, int b) {
return 0;
}

int getRand(int max) {
return (rand()%(max-1));
}

int main() {
int i = 500;
int fw = 1000; int fh = 1000;
int lock_x, lock_y, lock_rx, lock_ry;
int randX; int randY;
do {
randX = getRand(fw) + 1;
if (lock_x != 0 && lock_rx != 0) {
randX = lock_x - lock_rx + getRand(2*lock_rx+1);
}
randY = getRand(fh) + 1;
if (lock_y != 0 && lock_ry != 0) {
randX = lock_y - lock_ry + getRand(2*lock_ry+1);
}
} while (--i && i > 0);
}
[/code]

Теперь сам тест
user@dstation:~$ time ./test.pl

real 0m0.004s
user 0m0.000s
sys 0m0.000s

user@dstation:~$ time ./test

real 0m0.001s
user 0m0.000s
sys 0m0.000s

Ммммммм всего-то цикл из 500 итераций не делающих ни чего !
Разница в 3 раза .... пустые слова ?!

[color=green][size=9]Добавлено спустя 12 минут 14 секунд:[/size][/color]

В догонку Сервак 2-х процессорный и 4G на борту.

[color=green][size=9]Добавлено спустя 4 минуты 25 секунд:[/size][/color]

Да и ни чего не делает ...
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

Попробуй на оффоруме ОК спросить
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Сообщение QnX »

Я тут задался вопросом, как использовать С-шные библиотеки и функции из них в перле .... оказалось сходу не осилить. Но можно. Есть еще вариант, что мнение мое ошибочное и как вариант тормоза происходят на стороне IP. Буду копать.
Все равно всем ОГРОМНОЕ спасибо за мнения.
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Я бы посоветовал ресурсоемкие функции вынести в dll.
Аватара пользователя
QnX
Энтузиаст
Сообщения: 140
Зарегистрирован: Пт янв 04, 2008 10:15 am

Сообщение QnX »

Вот и я в туже сторону думаю, только нужно понять на каком этапе перл будет подгружать эти ДЛЛ. Скорее все в момент исполнения, .... :( тогда толку с того почти ни какого, а то и вовсе приведет к регресу. Пока библиотека загрузится, пока код отработает. Конечно можно юзать невыгружаемые библиотеки .... нужно подумать.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Библиотека грузится во время подгрузки части перла.
ТЕ, если мы используем нашу библу в плаге, значит когда плаг инициализируется, библу тоже подгружает.

И вообще, плаги многое позволяют. Очень многое. Нужно только уметь пользоватся.
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Да, иногда на некоторых пиратских серверах используется какая-нибудь библиотека шифрующая пакеты от клиента, в таком случае можно использовать функции из этой dll для шифровки трафика openkore. Правда только на windows системах.
Ответить