![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Уважаемые обитатели этого форума!
Имею вопрос. Как наиболее эффективно (скорость, память) что-то сделать с каждой буквой очень длинной строки? И как отследить потребляемую скриптом память? Самое быстрое, что мне самому удалось придумать:
Это сообщение отредактировал(а) amg - 17.8.2006, 09:56 |
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
У меня встречный вопрос: откуда ноги растут? Наверняка же хочется манипулировать буквами не на пустом месте. Чем продиктована такая необходимость?
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Второй вопрос (как отследить потребляемую скриптом память) решился. В очередной раз торжествует принцип "На CPAN'е есть всё". Нашелся модуль Memchmark, который делает как раз то что нужно.
Вопрос "Как наиболее эффективно что-то сделать с каждой буквой очень длинной строки?" остается актуальным. |
|||
|
||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
Я пробовал применить такие конструкции:
но они практически все медленнее. Так что while с chop получается самая быстрая конструкция, IMHO. Возможно быстрее будет подпрограмма на Си прикомпиленая в модуль, но тут я не спец, и не подскажу как... Да и не уверен в этом, perl вcе же заточен для обработки строк наилучшим образом.... Это сообщение отредактировал(а) Nab - 18.8.2006, 12:50 -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Nab, спасибо. Я пробовал примерно то же самое. Результаты аналогичны. Буду думать в сторону Си.
|
|||
|
||||
| Nab |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 25.3.2006 Где: Kiev Репутация: 26 Всего: 37 |
А обязательна последовательная обработка строки, может задачу можно распараллелить?
Мне кажется в этом случае будет прирост производительности ... -------------------- Чтобы правильно задать вопрос нужно знать больше половины ответа... Perl Community FREESCO in Ukraine |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Попробовал распараллелить задачу на два процесса (fork). Выигрыша в скорости это не принесло.
|
|||
|
||||
| sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Правильно, распараллеливание стоит применять только при работе с сетевыми интерфейсами! С помощью утилиты ps amg, вот так бы я делал:
А зачем тебе так важна скорость здесь? Добавлено @ 12:14 И скорость работы отдельных кусков perl-кода лучше замерять с помощью Benchmark. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
| amg |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Это сообщение отредактировал(а) amg - 22.8.2006, 16:13 |
||||||
|
|||||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |