Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стоит ли писать модули с XSUB ? 
V
    Опции темы
fray
Дата 26.5.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: 0
Всего: 0



Вопрос такой, стоит ли писать модули через XSUB, каков выигрышь в скорости, поделитесь кто уже писал ? 


Это сообщение отредактировал(а) fray - 26.5.2008, 18:51
PM MAIL   Вверх
yura_nev
Дата 28.5.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.12.2007

Репутация: нет
Всего: нет



при вычислениях, например стоит. у меня вычисление специфической хеш-функции ускорилось по субъективным ощущениям раз в 100 после переписывания ее с PP на XS.

на PP:
1500 вычислений этого хеша занимало ~10 сек.

на XS:
1500 вычислений этого хеша с записью в файл заняло доли секунды, плюс к тому когда количество вычислений вырасло до 7500 - на время это никак заметно не повлияло.

вот даж замерил - 7500 вычислений = ~0.04 сек.
итого, производительнось этого модуля увличилась примерно в (7500/1500)*(10/0.04) = 1250 раз smile

Это сообщение отредактировал(а) yura_nev - 28.5.2008, 11:11
PM MAIL   Вверх
fray
Дата 30.5.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: 0
Всего: 0



да у же сделал модуль понял, слабые стороны xs.  smile 
PM MAIL   Вверх
ginnie
Дата 30.5.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый fray, не поделитесь своими соображениями по слабым сторонам XS?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
shamber
Дата 30.5.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Хоть и не fray.


 компилирование

Это сообщение отредактировал(а) shamber - 30.5.2008, 15:22
PM MAIL Jabber   Вверх
ginnie
Дата 30.5.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый shamber, если возможно, расширьте свой ответ, почему компиляция является для Вас слабой стороной? По соображениям кросплатформенности?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
shamber
Дата 30.5.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(ginnie @  30.5.2008,  15:28 Найти цитируемый пост)
 По соображениям кросплатформенности?


И это тоже, но не только.

Не на каждой машине возможно откомпилировать модули, для это нужна MS как минимум (ЕСЛи ActiveState стоит).
А если и еще на чужие хостинги ставить, а доступа к косоли нет.
Хотя конечно *.ppm может помочь, но может инета не быть.


Хотя все-таки, это полностью минусом назвать нельзя(больше похоже на отговорку smile). Особенно если прирост производительности 1250 раз smile

Это сообщение отредактировал(а) shamber - 30.5.2008, 15:38
PM MAIL Jabber   Вверх
ginnie
Дата 30.5.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый shamber, XS и фраза "А если и еще на чужие хостинги ставить, а доступа к косоли нет" у меня в голове плохо совмещаются. XS эффективен, когда не хватает скорости эквивалента на Perl, т.е. когда для проекта важна производительность. И в таком случае вариантов с отсутствием доступа к консоли обычно не бывает smile 

Это сообщение отредактировал(а) ginnie - 30.5.2008, 16:01


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
shamber
Дата 30.5.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Уважаемый ginnie
я ж и сказал что это больше из разряда отговорок.
т.е. я с вами полностью согласен.

PM MAIL Jabber   Вверх
tolkien
Дата 30.5.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Если для произоводительности нужно компилировать, то зачем тогда PERL? Не лучше ли писать на С++. Ведь будет быстрее чем на PERL всегда. 
PM MAIL   Вверх
shamber
Дата 30.5.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



hollywar?
PM MAIL Jabber   Вверх
ginnie
Дата 30.5.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый tolkien, предположим нам надо разработать некоторый проект. Оцениваем время разработки макета и получаем, что разработка на Perl занимает в 5 раз меньше времени, чем на С++. Реализовываем макет. Тестируем и получаем, что разработанная система очень интенсивно использует один из модулей (например вывод с использованием шаблонизатора). Переписывание части (или всего) шаблонизатора на XS займет еще какое-то время, но гораздо меньшее чем разработка всей системы, а выигрыш окажется весьма ощутимым. Обычно происходит именно так. Поэтому производительность почти всегда - не единственный критерий.

P.S. Приятно, что Perl позволяет это делать!

Это сообщение отредактировал(а) ginnie - 30.5.2008, 17:40


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
sir_nuf_nuf
Дата 31.5.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Еще недостатки:
1) работа с много поточностью
Если мы используем не thread safe C библиотеку , получаем такую же на перле. => все вытекающие
2) Отладка ошибок.
Согласитесь, что segmentation fault отловить довольно сложно, по крайней мере сложнее, чем die.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
vadiml
Дата 1.6.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



shamber
Не на каждой машине возможно откомпилировать модули, для это нужна MS как минимум (ЕСЛи ActiveState стоит).
А если и еще на чужие хостинги ставить, а доступа к косоли нет.


в большинстве случаев можно создать можно создать пердкомпилированый пакет, например rpm

tolkien
Если для произоводительности нужно компилировать, то зачем тогда PERL? Не лучше ли писать на С++. Ведь будет быстрее чем на PERL всегда. 

я бы посоветовал Вам попробовать написать более-менее крупную программу на C++ и перле, и сравнить трудозатраты.
У меня на перле получается быстрее.

другой вопрос, как программа будет распространяться -- чаще проще приложить пару библиотек для с++, чем весь перл
поэтому я когда пишу программу совершенно незнакомым людям чтоб 1 раз отдать -- пишу на С, если я буду её постоянно сопровождать -- то буду писать на перле что мне съэкономит массу времени как при разработке, так и в дальнем.

---
и ещё по поводу XS
если мне хочется использовать какую-нибудь С-библиотеку, то я скорее буду её использовать на перле через XS, чем писать на С, т.к. делается это очень легко.
а отладку XS можно делать, например, в gdb

Добавлено через 3 минуты и 36 секунд
sir_nuf_nuf
segmentation fault отловить довольно сложно, по крайней мере сложнее, чем die. 

это сильно зависит от того, как Вы пишите на С и понимаете сборку мусора перла.
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 2.6.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



vadiml, segmantation fault бывает даже когда не пишешь на C совсем и хорошо понимаешь механизм сборки мусора перл:

Если используешь XS библиотеку - такое возможно.
Самое неприятное когда бага XS библиотеки проявляется не сразу, а при определенных условиях.
Имеем: при определенных условия perl интерпретатор просто получает segmentation fault, что бы найти откуда он ее получает, 
нужно уметь юзать gdb и хорошо понимать стек вызовов самого интерпретатора, ну или апача как в нашем случае


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.