![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
fray |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: 0 Всего: 0 |
Вопрос такой, стоит ли писать модули через XSUB, каков выигрышь в скорости, поделитесь кто уже писал ?
Это сообщение отредактировал(а) fray - 26.5.2008, 18:51 |
|||
|
||||
yura_nev |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
при вычислениях, например стоит. у меня вычисление специфической хеш-функции ускорилось по субъективным ощущениям раз в 100 после переписывания ее с PP на XS.
на PP: 1500 вычислений этого хеша занимало ~10 сек. на XS: 1500 вычислений этого хеша с записью в файл заняло доли секунды, плюс к тому когда количество вычислений вырасло до 7500 - на время это никак заметно не повлияло. вот даж замерил - 7500 вычислений = ~0.04 сек. итого, производительнось этого модуля увличилась примерно в (7500/1500)*(10/0.04) = 1250 раз ![]() Это сообщение отредактировал(а) yura_nev - 28.5.2008, 11:11 |
|||
|
||||
fray |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 7.6.2007 Репутация: 0 Всего: 0 |
да у же сделал модуль понял, слабые стороны xs.
![]() |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый fray, не поделитесь своими соображениями по слабым сторонам XS?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Хоть и не fray.
компилирование Это сообщение отредактировал(а) shamber - 30.5.2008, 15:22 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый shamber, если возможно, расширьте свой ответ, почему компиляция является для Вас слабой стороной? По соображениям кросплатформенности?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
И это тоже, но не только. Не на каждой машине возможно откомпилировать модули, для это нужна MS как минимум (ЕСЛи ActiveState стоит). А если и еще на чужие хостинги ставить, а доступа к косоли нет. Хотя конечно *.ppm может помочь, но может инета не быть. Хотя все-таки, это полностью минусом назвать нельзя(больше похоже на отговорку ![]() ![]() Это сообщение отредактировал(а) shamber - 30.5.2008, 15:38 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый shamber, XS и фраза "А если и еще на чужие хостинги ставить, а доступа к косоли нет" у меня в голове плохо совмещаются. XS эффективен, когда не хватает скорости эквивалента на Perl, т.е. когда для проекта важна производительность. И в таком случае вариантов с отсутствием доступа к консоли обычно не бывает
![]() Это сообщение отредактировал(а) ginnie - 30.5.2008, 16:01 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
Уважаемый ginnie,
я ж и сказал что это больше из разряда отговорок. т.е. я с вами полностью согласен. |
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Если для произоводительности нужно компилировать, то зачем тогда PERL? Не лучше ли писать на С++. Ведь будет быстрее чем на PERL всегда.
|
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
hollywar?
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемый tolkien, предположим нам надо разработать некоторый проект. Оцениваем время разработки макета и получаем, что разработка на Perl занимает в 5 раз меньше времени, чем на С++. Реализовываем макет. Тестируем и получаем, что разработанная система очень интенсивно использует один из модулей (например вывод с использованием шаблонизатора). Переписывание части (или всего) шаблонизатора на XS займет еще какое-то время, но гораздо меньшее чем разработка всей системы, а выигрыш окажется весьма ощутимым. Обычно происходит именно так. Поэтому производительность почти всегда - не единственный критерий.
P.S. Приятно, что Perl позволяет это делать! Это сообщение отредактировал(а) ginnie - 30.5.2008, 17:40 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Еще недостатки:
1) работа с много поточностью Если мы используем не thread safe C библиотеку , получаем такую же на перле. => все вытекающие 2) Отладка ошибок. Согласитесь, что segmentation fault отловить довольно сложно, по крайней мере сложнее, чем die. |
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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. это сильно зависит от того, как Вы пишите на С и понимаете сборку мусора перла. |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
vadiml, segmantation fault бывает даже когда не пишешь на C совсем и хорошо понимаешь механизм сборки мусора перл:
Если используешь XS библиотеку - такое возможно. Самое неприятное когда бага XS библиотеки проявляется не сразу, а при определенных условиях. Имеем: при определенных условия perl интерпретатор просто получает segmentation fault, что бы найти откуда он ее получает, нужно уметь юзать gdb и хорошо понимать стек вызовов самого интерпретатора, ну или апача как в нашем случае |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |