![]() |
|
|
![]()
|
|
| Иванофф |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 8.9.2006 Репутация: нет Всего: нет |
переходя от теории к практике
пример программы на фортране версия 8.08 написана на делфи, версия 8.1 написана на фортране (внешний вид несколько отличается, но это не из-за языков) при оценке расчетной части выяснилось, что фортран в 2 раза бысрее делфи (на одинаковых алгоритмах) кстати, для любителей ООП. делфи на процедурах с винапи32 в два раза быстрее чем делфи с ООП (объектами и методами) на одинаковых алгоритмах. |
|||
|
||||
| popovda |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 9.6.2006 Где: Москва Репутация: нет Всего: 6 |
Ну тут-то как раз ничего удивительного. Компилятор Delphi имеет очень хорошую оптимизацию; процедурный подход программирования, т.е. в том числе написанные на WinAPI программы, всегда выполняются быстрее написанных средствами ООП - нет виртуальных методов, высокой абстракции языка. Поэтому, кстати, Фортран очень поздно получил полноценное ООП и оно маловостребовано.
Но прирост производительности всего в 2 раза не удивляет. Т.к., как я понимаю, вы писали графический интерфейс на WinAPI, то ограничением скорости являются вызовы API-функций из dll-библиотек ОС (это всегда медленнее, чем вызовы статических библиотек, но экономит память), поэтому более высокой скорости мы не получим. В чисто вычислительных задачах без использования GUI и подключения разделяемых библиотек и при разумной организации ввода-вывода я получал прирост производительности над С до 20%, над С++ - в 2-3 раза. Вопрос в другом: а везде ли нужна высокая скорость исполнения кода? Ведь часто она достигается в ущерб трудоёмкости разработки. Какой компилятор Fortran и какие флаги оптимизации вы использовали? Кстати, для организации GUI в Фортран-приложениях я всё чаще стал использовать Python или TCL/Tk. Либо, если это чисто научная графика - MATFOR. -------------------- С уважением, Попов Д.А. |
|||
|
||||
| Иванофф |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 8.9.2006 Репутация: нет Всего: нет |
WinAPI вызывают все, никто их в программу в виде статических библиотек не берет.
в фортране (интел. вер.10.01) в релизе практически ничего не менял. все задачи загружали только один процессор, т.е. распараллеливание не использовалось (его и по задаче не было). ввод-вывод взят из апи, динамическое распределение памяти через alloc и realloc, как и в программе на делфи. внутри все устроено на списковых структурах и динамически размещенных записях. для вывода опенжл. скорость расчета нужна - и чем больше тем лучше. для этого и был сделан переход на фортран. и сравнение результатов показывает что смысл в этом был. |
|||
|
||||
| popovda |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 9.6.2006 Где: Москва Репутация: нет Всего: 6 |
Да, вы, однако, прямо-таки свободный радикал какой-то
Ещё одно узкое место - ввод-вывод. Вычислительный алгоритм в идеале вообще не должен обращаться к вводу-выводу. Это лучше делать до или после него, или в отдельном асинхронном потоке. Иначе скорость выполнения кода упирается в ввод-вывод. Поэтому, если код написан хорошо, то достигнута практически предельная скорость. Это сообщение отредактировал(а) Cr@$h - 19.1.2009, 15:47 -------------------- С уважением, Попов Д.А. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |