![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]()
Привет форумчанам.
Возникла проблема. Есть приложение, которое строит поверхность уровня. Но оно работает очень долго: 200^3 точек - полторы минуты. Львиную долю времени расчетов занимает расчет значения в точке (через обратную польскую запись). Я где-то слышал, что если вынести эту функцию в отдельный модуль (unit), то быстродействие увеличится. Так ли это? И есть ли какие-нибудь другие способы ускорить программу? |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 07.11.2009
Сообщений: 218
|
![]() Цитата:
![]() Ускорить можно методом оптимизации кода. Выложи исходник и тогда может кто-то чем-то и поможет ![]()
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности ![]() |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]() Код:
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]() Код:
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]()
К сожалению, как короче сделать, не придумал (((
Код:
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 05.05.2011
Сообщений: 35
|
![]()
В принципе, упростить можно только со сменой основной структуры - сменить case на что-нибудь еще. Но на что?
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
В коде не стал разбираться. Как кардинальное советую применить нити http://www.delphimaster.ru/articles/thread/index.html
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
во первых какая формула? а то малоли километрокая формула
во вторых быстрее "скомпилировать" формулу в некоторый плоский байткод, а не бегать по кейзу каждый раз разбирая формулу например Prepare(Math,'x^2-y+z/10'); v:=Value(Math,x,y,z); где в Math consts:array of Float; F:array of operands; Stack; и тупо for i:=0 to length(F)-1 do DoOper(f[i]); на потоки разбить можно, но кардинальностью тут и не пахнет... размазать не оптимальный код по всем ядрам ускорение упрется в колво ядер. а код можно допилить до туевохуч крат
Не стесняемся, плюсуем!
![]() Последний раз редактировалось Slym; 14.01.2013 в 10:37. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
если уж говорить о по настоящему кардинальным подходах:
1. сделать как асемблерную вставку 2. OpenCL. Но как уже было сказано ранее стоит избавиться от ресурсоёмких операций.
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автозапуск приложения. Но вопрос совсем не про автозапуск приложения. | 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 |