![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
iLents |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Приветствую !
Вот такой код на Delphi7 ( вычисление корней квадратного уравнения )
исполняется 250 ms Вот такой код на Java 1.5 ( Windows XP )
исполняется 150 ms Т.е. Java работает почти в два раза быстрее. Комментарии ? |
||||
|
|||||
Doga |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
Привет.
А если скорость измерять с помощью QueryPerformanceFrequency/QueryPerformanceCounter? |
|||
|
||||
iLents |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Ими я и измерял сначала, тот же самый результат
Добавлено @ 13:18 Решил упростить задачу, уж больно код сложный был. Вообще ничего не понимаю теперь.
Так вот, на Java стало быстрее ( чего и следовало ожидать, число проверок-то уменьшилось ), а на Delphi - стало медленнее ! Delphi 2 млн итераций выполняет за 290 ms, Java за 140 ms. Т.е. на этом примере Javа в два раза быстрее. Подымите мне веки, в чем порылась собака ? Это сообщение отредактировал(а) iLents - 19.5.2008, 13:27 |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
iLents, дампни прогу, нужно взглянуть на асм код иначе трудно сказать чего там плохо.
Добавлено через 4 минуты и 57 секунд При таких условиях повторения компилятор мог заменить передачу параметров на явную подстановку чисел и даже кой чего вычислить заранее. Попробуй сгенерить большой массив чисел на 2000000 и передавать в функцию элементы этого массива, тогда компилятор не сможет ничего просчитать заранее. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Ок, сделаю массив 1000x1000
Это сообщение отредактировал(а) iLents - 19.5.2008, 13:56 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вообще-то оптимизатор у делфей паршивенький, но лишего делать не станет. Поглядел на асмовский код, единственное чего видеться тормозного так это вызов функции sqrt, вызов можно было вполне заменить на инлайн вствку, тем более что функция небольшая.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
iLents |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Убрал sqrt
джавовский код все равно в два раза быстрее
Это сообщение отредактировал(а) iLents - 19.5.2008, 14:10 |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Нет, пока просто убрал вычисление корня, ввиду твоего предположения "единственное чего видеться тормозного так это вызов функции sqrt".
|
|||
|
||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
В яву добавил вычисление с массивами. Т.е. по набору из 10000*3 коэфифциентов вычисляется 10000*2 корней и так до общего числа итераций 2000000.
Вывод на консоль: Quadratic arrays:(2000000) 188. Т.е. даже с заполнением массивов в яве существенно быстрее, чем в Delphi без массивов. Это сообщение отредактировал(а) iLents - 19.5.2008, 20:45 |
|||
|
||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Попробовал заполнять коэффициенты случайными числами.
Пустой номер, только еще быстрее стало: "Quadratic arrays:(2000000) 156" С этим понятно - стало попадать в ветки, где решений нет, соответственно и вычислений нет ... |
|||
|
||||
Qu1nt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
замени на это:
Получишь ~60 ms "убыстрения" (% |
||||
|
|||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Действительно, существенный выигрыш, более 100 ms. Однако - корни уравнений надо передавать как variable, они ж назад должны возвращаться.
Компилятор, кстати, начинает ругаться, мол, value assigned to %s never used. Вот и оптимизирует их, видать. Это сообщение отредактировал(а) iLents - 20.5.2008, 18:51 |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Ну так создай свой тип:
Это сообщение отредактировал(а) ivan219 - 21.5.2008, 10:24 |
|||
|
||||
iLents |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Проверил. В таком виде с включенной оптимизацией - самый медленный вариант
Это сообщение отредактировал(а) iLents - 21.5.2008, 12:53 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |