|
Модераторы: Daevaorn |
|
allexdav |
|
|||
лоботомированное тело тиклского питоноида Профиль Группа: Участник Сообщений: 43 Регистрация: 19.3.2006 Где: Россия, Нижний Но вгород Репутация: 3 Всего: 3 |
Тестировал код, написанный на питоне (+ Psyco) и его аналог на яве.
Получилось, что питон проигрывает яве процентов 5 - 10 ( если ява без ключа -server) То ли я балбес, то ли на самом деле так |
|||
|
||||
J2A |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Версия python? версия psyco? версия java? платформа? условия тестирования? тестируемый код?
Это сообщение отредактировал(а) J2A - 17.4.2006, 17:01 --------------------
Be easy, stay cool |
|||
|
||||
Бонифаций |
|
|||
Опытный Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
всего на 10? Это звучит интересно. покажите пожалуйста код.
-------------------- Бонифаций. |
|||
|
||||
allexdav |
|
||||||||
лоботомированное тело тиклского питоноида Профиль Группа: Участник Сообщений: 43 Регистрация: 19.3.2006 Где: Россия, Нижний Но вгород Репутация: 3 Всего: 3 |
Версия питона 2.4
Версия Psyco - последняя Версия JAva 1.5.06 Платформа: AMD Athlon 64 3000+ 1Gb Код на Питоне
Выводит соответсвенно
Код на Яве
Выводит
соответственно подели одно на другое получим, что разница составляет 13 процентов. Вот. Или это некорректный тест и производительность им мерить нельзя? |
||||||||
|
|||||||||
J2A |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Тест некорректен. Реализация генератора случайных чисел в различных языках различна. Как по скорости, так и по качеству. Нужно было использовать одинаковый набор данных. Однако ж даже при такой постановке теста, в рамках "игры" с питоном можно получить те самые 10%:
1. Прогоняю твой тест (единственно, что миллион снизил до сотни тысяч, а то памяти не хватало...) на дефолтном python-2.3 2. Заменяю range на xrange 3. Прогоняю с xrange, на python-2.4 Результаты:
А java....
P.S. А psyco ничего не дает для этого кода... всё в пределах погрешности или около того. Это сообщение отредактировал(а) J2A - 17.4.2006, 20:46 --------------------
Be easy, stay cool |
||||
|
|||||
powerOn |
|
||||
software saboteur Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Ты бы еще версию Java 1.0 взял... В 1.4.2_04 нельзя добавлять примитивные элементы примитивных типов в ArrayList. Элемент сначала надо обернуть в объект. Например, так:
Ссылка на доку (1.4.2) : http://java.sun.com/j2se/1.4.2/docs/api/ja.../ArrayList.html Ссылка на доку последней версии (1.5.0) : http://java.sun.com/j2se/1.5.0/docs/api/ja.../ArrayList.html А вообще нужно последнии версии продуктов использовать, а то получается один на новенькой оптимизированной платформе, а другой на старой... Не правильно это... |
||||
|
|||||
pythonwin |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Товарищи! Для измерения скорости выполнения кода используйте профиллеры. Для Python:
import profile ------- def main(): бла-бла-бла ------- profile.run('main()') |
|||
|
||||
allexdav |
|
|||
лоботомированное тело тиклского питоноида Профиль Группа: Участник Сообщений: 43 Регистрация: 19.3.2006 Где: Россия, Нижний Но вгород Репутация: 3 Всего: 3 |
чтобы использовать профалер, нужно то, что он будет измерять функции то есть
в этом случае функция одна - следовательно, использование профайлера ничего не даст для замера производительности
вывод здесь конечно большой, но чисто справочный в случае замера производительности - не интересен. Добавлено @ 13:04 2 J2A я не о десяти процентах, а о сравнимости скорости питона со скоростью явы. Мне всегда казалось, что ява должна быть пошустрее Это сообщение отредактировал(а) allexdav - 18.4.2006, 13:01 |
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
А в Java 1.5 просто ввели автобоксинг. Писанины меньше, но примитив все равно заворачивается в объект. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Бонифаций |
|
|||
Опытный Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
покажите пожалуйста вывод vmstat во время работы и питона и явы/ Я бы предположил что ява просто ест больше памяти и система ушла в своп во время теста явы.
А вообще (тогда тоило бы и массив d=[] в цикле, раз уж вы в цикле создаете каждый раз arraylist -------------------- Бонифаций. |
|||
|
||||
nerezus |
|
|||
Вселенский отказник Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
Что-то вы с джавой намутили. Нужно позвать кодеров из раздела с джавой, чтобы нормально протестировать.
А то получится у вас еще, что питон быстрее джавы |
|||
|
||||
allexdav |
|
|||
лоботомированное тело тиклского питоноида Профиль Группа: Участник Сообщений: 43 Регистрация: 19.3.2006 Где: Россия, Нижний Но вгород Репутация: 3 Всего: 3 |
код на яве писал кодер из явы
В системе - 1 гиг оперативы. ява на этом тесте есть 260 метров ( вроде, сейчас не помню... в системе сответственно почтив 4 раза больше... чего ей в своп уходить - не знаю) тестировал на виндосе, vmstat я так понял линуксовая утилита ) |
|||
|
||||
Void |
|
||||||||||||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Немножко переделал код, потому что в варианте на Питоне использовался словарь (хэш-таблица), а на Java — динамически растущий список.
Psyco в бинариках для Python64 нет, так что будем мерять голый интерпретатор. Время среднее из 6 запусков, исключая первый. Первый вариант: оба со списком:
53.9 с
17.1 с Без комментариев. Второй вариант: оба с хэш-таблицей. Тут питонистов ожидает приятный сюрприз
45.9 с
114.0 с — при максимальном хипе в 192 Мб (-Xmx192M). Скорость очень сильно зависит от выставленного размера хипа. При 192 Мб наблюдается максимум, при уменьшении начинает очень тормозить (<128 Мб вообще вылетает), при увеличении до 512 Мб скорость падает процентов на 20. Питон в этом тесте съел около 80 Мб памяти. Это сообщение отредактировал(а) Void - 18.4.2006, 20:01 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||||||||
|
|||||||||||||
allexdav |
|
|||
лоботомированное тело тиклского питоноида Профиль Группа: Участник Сообщений: 43 Регистрация: 19.3.2006 Где: Россия, Нижний Но вгород Репутация: 3 Всего: 3 |
ЭЭЭ что - то у меня в 1 случае разрыв не столь драматичен
ява говорит, что 41875 а питон, что 70.9850001335 может быть что - то со параметрами запуска явы? |
|||
|
||||
Void |
|
|||
λcat.lolcat Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
allexdav, я под серверной VM запускал (другой нет просто ).
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |