![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| demond |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.2.2008 Репутация: нет Всего: нет |
Здравствуйте. Подскажите, кто знает, что будет быстрее:
или
или
Почему и как это проверить? а то benchmark одни нули выдает. :-( |
||||||
|
|||||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
demond, быстрее, скорее всего будет вариант
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Разница будет настолько микроскопична, что даже не стоит на этом заморачиваться.
-------------------- Died at Life.pl line 21 |
|||
|
||||
| ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Скрипт print_test.pl
результат perl print_test.pl 2>/dev/null
Понять проблемы по второму варианту пока не смог. Это сообщение отредактировал(а) ginnie - 7.11.2008, 20:27 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
| demond |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.2.2008 Репутация: нет Всего: нет |
действительно странно! самым долгим должен быть 1-й вариант. надо еще потестить. может дело в конкатенации через ","?
perl 5.10 Это сообщение отредактировал(а) demond - 7.11.2008, 21:03 |
|||
|
||||
| tolkien |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Я для себя выбрал делать так
1
т.е выводить по отдельности без склеивания строк. Если включена буферизация, то я думаю этот вариант будет быстрее работать чем. 2
Вот если буферизация выключена, то вариант 1 будет работать медленнее, т.к будет выполнено 2 операции вывода вместо одной. И хочу поделиться опытом ). Как писать быстрые функции с хеш интерфесом func(PARAM1 => VALUE1, PARAM2 =>VALUE2,...) я сразу после строки my %args = (PARAM1 => DEFAULT_VALUE1, PARAM2 => DEFAULT_VALUE2,..., @_); делаю присваивание отдельным скалярным переменным my $param1 = $args{PARAM1}; my $param2 = $args{PARAM2}; ... т.к доступ к значению хранящемуся в хэше в 4 раза медленее чем к значению хранящемуся в скаляре. Конечно минус этого что происходит лишнее копирование. Но если значения параметров хеш функции хотя бы 2 раза встречаются в коде, то это уже дает выигрыш в производительности. Кроме того делает код лучше для чтения. И конечно передавать строки нужно всегда только через ссылки. |
||||
|
|||||
| demond |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.2.2008 Репутация: нет Всего: нет |
Я где-то прочитал, что вариант:
будет медленей, чем:
потому что в 1-м варианте perl'лу приходится раскрывать кавычки для получения значения $a. А это очень ёмкая операция. Вот хотелось бы проверить... Только видимо в при нынешней производительности компьютеров, разницу не заметить! |
||||
|
|||||
| ginnie |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
tolkien, спасибо за подсказку с буферизацией!
Изменение буферизации STDERR при помощи
вообще ни на что не влияет в случае перенаправления STDERR в /dev/null. А вот с выводом в файл цифры изменились. При включенной буферизации
Rate 2 4 1 3 2 162025/s -- -11% -11% -13% 4 182857/s 13% -- 0% -1% 1 182857/s 13% 0% -- -1% 3 185507/s 14% 1% 1% -- при выключенной
Rate 3 4 1 2 3 53556/s -- -0% -6% -10% 4 53782/s 0% -- -5% -9% 1 56889/s 6% 6% -- -4% 2 59259/s 11% 10% 4% -- -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||
|
|||||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |