|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.01.2013, 09:40 | #21 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Правильно для загрузки второго операнда. Так давайте загружать его в тех ветках где он нужен. Код:
Код:
Код:
Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 18.01.2013 в 09:57. |
||
18.01.2013, 11:03 | #22 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
тоже думал про инлайн пупа для двухоперандовых операций, будет быстрее, но что то остановило
проверил - влияет незначительно (на 5 секундных вычислениях выигрыш 0,1), поэтому оставил как есть переделал в инлайн кстати да пуп надо в функцию заделать у вот пушит результ можно как у меня 1 раз в конце, но ты протести всой вариант и выложи сюда сколько выйграл
Не стесняемся, плюсуем!
Последний раз редактировалось Slym; 18.01.2013 в 11:28. |
19.01.2013, 17:40 | #23 | ||
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
Цитата:
Я тестировал на промежуточном варианте - уравнение сферы x^2+y^2+z^2 , конуса x^2+y^2-z^2 или мути типа sin(x*z-cos(y))+cos(z). Вообще эта прога должна строить поверхность уровня любой неявно заданной функции в определенном объеме. Неоптимальность многих кусков проистекает оттого, что прога основана на другой проге, "Визуализация функций от 3 переменных методом сечения", которую я делал 2 года назад. Кому интересно, может посмотреть, что я там наворочал, однако возможен обильный facepalm Цитата:
Последний раз редактировалось Григоренко Степан; 19.01.2013 в 17:44. |
||
20.01.2013, 19:18 | #24 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
Метод товарища Слима дал прирост в скорости от 5 до 6.5 раз, метод через процедурный тип пока не пробовал, попробую после экзамена
|
21.01.2013, 08:16 | #25 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Всё ни как руки не дотягивались (а ноги не доходили) ответить по этой теме. Короче вот чё накропал:
1. процедурные типы рулят 2. record case - для элементов "формулы" 3. const array - для списка операторов 4. ссылки на элементы динамического списка - для переменных Исходник на Delphi XE3: Обратная польская запись.zip P.S.: Сразу извиняюсь за отсутствие комментов (ну там и так всё понятно ) (старался только имена на английском мнемоническими делать) и наличие ошибок (особо не тестил). Хотелось передать именно идею. |
22.01.2013, 17:32 | #26 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
Да, вы сказали глупость Через процедурный тип подстановка ускорилась в среднем в 15 (!!!) раз, а через кейс только в 5,5
Пруф: x^2+y^2+z^2=9 Изначально: 1,2278 9,32 74,7 251,4 Через кейс: 0,2346 1,86 14,7 49,46 Через п.т. : 0,0674 0,55 4,40 14,94 cos(x)+cos(y)+cos(z)=1 Изначально: 0,789 6,35 50,46 170 Через кейс: 0,122 0,96 7,714 26,0 Через п.т. : 0,066 0,53 4,205 14,2 Проверял на 2 функциях, Первая строка - то, что было до оптимизации, вторая - оптимизированный кейс, третья - оптимизация через процедурный тип. Четыре колонки чисел - пуски для разного количества точек (50^3, 100^3, 200^3, 300^3 соответственно, при 300 в кубе точек прога жрет гиг оперативы но обычно хватает и 50^3) Последний раз редактировалось Григоренко Степан; 22.01.2013 в 17:38. |
23.01.2013, 15:08 | #27 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Код:
Если да, то это FloatToStr и тормозит всю работу. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозапуск приложения. Но вопрос совсем не про автозапуск приложения. | avd | Общие вопросы Delphi | 4 | 30.08.2012 22:24 |
После запуска приложения из службы созданной на C# не отображается иконка приложения | dmail1976 | Общие вопросы .NET | 1 | 22.09.2011 13:38 |
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. | SkyM@n | Фриланс | 3 | 29.12.2007 16:21 |