powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Оптимизация и рефакторинг кода на fortran'е
25 сообщений из 27, страница 1 из 2
Оптимизация и рефакторинг кода на fortran'е
    #36062700
mindstream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товариши! Свалилось на меня счастье в виде 4,5 тысяч строк кода на фортране, который писался в разное время разными людьми в течение последних 15 лет на одной кафедре. Задача - привести в адекватный вид и оптимизировать (один прогон на реальных данных ест сейчас недели три на core2duo о трех гигагерцах). Уже прикрутил все это дело к make, перевел на fortran95 и вручную перекроил пачку функций. Но времени, как обычно, мало, а дел много.
Помогите разрешить два вопроса, пожалуйста:
1) IDE для рефакторинга. Пробовал phortran для eclipse, но он пока мало чего умеет =( Пробовал поднять sun studio на linux, но тоже пока с трудом - автоматический инсталлятор убивается сразу и бесповоротно. Чем еще можно удобно поработать с кодом на фортране?
2) Люто бешено поработал над софтиной профайлером и выяснилось, что 70% времени уходит на вычисление логарифма. Существуют ли реализации алгоритма расчета логарифма или библиотеки с его реализацией?

Спасибо.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36062708
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция вычисления логарифма заложена в процессор. Убедитесь, что вызывается именно она.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36062853
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonФункция вычисления логарифма заложена в процессор.Есть у меня смутные сомнения по этому счету. Давно это было, но помнится в библиотеке LAPACK были отдельные реализации элементарных функций. Это все имхо, конечно. Скорее всего какой-то "провал" в алгоритме и как следствие - избыточное количество вызовов функции. А еще немаловероятно, что врет профайлер .
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36062863
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я к сожалению не знаком с фортраном. Но вполне может быть, что у автора, используется custom- функция вычисления логарифма. Возможно это связано с древностью исходного кода или с какими-то особыми требованиями к типам данных (разрядная сетка вычисляемого результата более 64, или более 80 бит).
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36062910
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На фортране ВСЕГДА, с самой первой версии все аналитические функции были неотемлемой частью языка. Оптимизировать там нечего, да и невозможно, бо код функции недоступен. Искать надо почему так часто эта функция вызывается и нельзя ли уменьшить количество обращений к ней. Кроме того, фортран по своей природе - процедурный язык, никаких парадигм ООП не поддерживает, поэтому не совсем понятно какой выигрыш ожидается от рефакторинга.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36062934
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью согласен насчёт рефакторинга. Но добавлю, что к процедурному коду вполне применимы паттерны типа "Consolidate Duplicate Conditional Fragments", "Parametrize Method" и прочие, имеющие общую (не объектную) природу.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36063016
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mindstream

Среди команд сопроцессора есть FYL2X, FYL2XP1 . Это вычисление логарифмов по основанию 2 с умножением на константу. Для произвольного основания, можно воспользоваться формулой замены основания логарифма.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36063036
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n...
фортран по своей природе - процедурный язык, никаких парадигм ООП не поддерживает, поэтому не совсем поня
тно какой выигрыш ожидается от рефакторинга.Какая связь между выигрышем от рефакторинга и поддержки языком парадигм ООП?
Про рефакторниг:
Рефакторинг
Рефакторинг или реорганизация . процесс полного или частичного преобразования внутренней структуры програ
ммы при сохранении её внешнего поведения. В его основе лежит последовательность небольших эквивалентных (
то есть, сохраняющих поведение) преобразований.
...
В программировании термин рефакторинг означает изменение исходного кода программы без изменения его внешн
его поведения.
...
Он выполняется для улучшения понятности кода или изменения его структуры, для удаления «мёртвого кода» .
всё это для того, чтобы в будущем код было легче поддерживать и развиватьА что Вы понимаете под рефакторингом? Если можно, в виде обозримого определения, а не ввиде "тынцев"
в толстые "талмуды".
maytonПолностью согласен насчёт рефакторинга. Но добавлю, что к процедурному коду вполне применимы
паттерны типа "Consolidate Duplicate Conditional Fragments", "Parametrize Method" и прочие, имеющие общу
ю (не объектную) природу.А если не применимы? Неужели нельзя с пользой провести рефакторинг(в смыс
ле вышеприведенного определения)? Причем, как можно это утверждать вот так - "за глаза", не ознакомившись с программой.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36063038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой комментарий относился к "процедурному коду вообще", а не к конкретному исходнику автора, которого не я и не вы пока не видели. Давайте на этом пока закончим и подождём свежей информации от топикстартера, с вашего позволения.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36063055
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМой комментарий относился к "процедурному коду вообще", а не к конкретному исходнику автора, которого не я и не вы пока не видели. Давайте на этом пока закончим и подождём свежей информации от топикстартера, с вашего позволения.А мои вопросы и были "вообще". Работа с конкретным исходником - это уже конкретная работа, за кторою ТС, наверное, платят
деньги. Не думаю, что ему удасться здесь "завербовать" добровольцев для добросовестного изучения
"4,5 тысяч строк кода на фортране".
PS. Никогда не было проблем с логарифмами. Были проблемы с функцией Эйри. Распечатывал
значения на бумаге, шел в библиотеку брал книгу Фока (Не нашел в и-нете русскую ссылку. Вот эта книга:
V.A. Fok, "Tables of the Airy functions" , Moscow (1946) (In Russian) - отсюда Airy functions )
и проверял, где ошибка. В моей ли программе, использующей написанную другим(на самом
деле "написанную другой" , но это и тогда не было важно), или, совсем наоборот.
А конкретная работа - это конкретная работа. Кто захватил, тот и делает. Почти как в анекдоте:
Код: plaintext
1.
2.
3.
4.
Полковник(увидев на полу окурок):
     - Чей?
Дневальный:
    - Да ладно, товарищ полковник. Курите, раз нашли. [code=plaintext]
                    
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36063970
mindstream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем ответившим =)
Функция log вызывается из библиотеки amdppm (profiler'ом гонял на amd системе), так что похоже, никаких внешних функций для вычисления логарифма не используется.
От рефакторинга ожидается выигрыш в виде улучшенной читабельности и поддерживаемости кода: сейчас в нем есть несколько функций, которые уже давно не используются, очень сильно перемешан код вывода на экран/в файл с кодом логики, куча глобальных переменных (спорный вопрос, но мне не нравится =) ), ну и далее в том же духе.

mikhail_nНа фортране ВСЕГДА, с самой первой версии все аналитические функции были неотемлемой частью языка. Оптимизировать там нечего, да и невозможно, бо код функции недоступен.
Ну все-таки с развитием его компиляторов часть аналитических функций рано или поздно должна была выноситься на процессор, если там появлялась их поддержка, не?) Тот же gcc и intel fortran compiler обновляются достаточно часто.


avb1003А мои вопросы и были "вообще". Работа с конкретным исходником - это уже конкретная работа, за кторою ТС, наверное, платят
деньги. Не думаю, что ему удасться здесь "завербовать" добровольцев для добросовестного изучения
"4,5 тысяч строк кода на фортране".

Если бы платили, сидел бы над кодом днями и ночами, ибо всякого рода enterprise и web порядком приелся) Работаю из любви к искусству и за диплом, хотя это достаточно косвенно к его теме относится =) Вербовать никого не хочу, просто хочу спросить, был ли какой-то подобный опыт у людей на форуме.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36064021
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mindstreamЕсли бы платили, сидел бы над кодом днями и ночами, ибо всякого рода enterprise и web порядком приелся) Работаю из любви к искусству и за диплом, хотя это достаточно косвенно к его теме относится =)
Это очень даже похвально.

Вербовать никого не хочу, просто хочу спросить, был ли какой-то подобный опыт у людей на форуме.
У меня был опыт оптимизации и рефакторинга больших кусков бизнес-логики, написанных на C# и PL/SQL. Но там математики было мало. В основном - оптимизировал за счёт устранения ненужных каскадных вызовов функций, которые постоянно возвращали константы в контексте вычислений. Кое-где включал пулы объектов. И плюс бесконечные SQL hints... Трассировки... Профилирование, где это можно. Вообще, скучаю без хорошей математики и алгоритмизации. Большинство бизнес-кода - это полный мрак и средневековье. Если читать комментарии к коду то можно понять что "здесь играем... а здесь рыбу заворачивали... а здесь снова играем". Многим исходникам на PL/SQL уже более 10 лет.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065017
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая связь между выигрышем от рефакторинга и поддержки языком парадигм ООП?

Прямая. Вот все те хорошие и умные слова которые Вы написали про рефакторинг реально применимы к ООП (может ещё к чему, например функциональному программированию и т.д. но я этих вещей не знаю, поэтому не стану судить). Я понимаю рефакторинг как изменение логической организации структуры построения классов в ООП языке с целью достижения всего того что Вы написали. А вот каким макаром применять рефакторинг к математике написанной в процедурном стиле я не понимаю. Единстенно что я могу себе вообразить - Вы узнаёте что некий мат метод реализованный в Вашей библиотеке одним способом может быть рализован гораздо эффективнее путём применения более нового алгоритма. Ну вы переписывате свою процедуру, удаляете из библиотеки старую и добавляете новую с тем же именем. Ну да, предётся пересобрать все исполняемые файлы явно или неявно обращаюшиеся к этой процедуре. Но называть это рефакторингом...
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще пара мыслей.

Думаю, что в нашем случае (фортран) автор должен (одновременно!) решать сразу две задачи. А именно - улучшать дизайн 4.5 тыс. строк кода. И (тоже одновременно!) оптимизировать его. Убеждён что эти две задачи тесно связаны. Тоесть каждый маленький шажок рефакторинга (а по рекомендации Фаулера каждое изменение должно быть минимальным и еще снабжаться постоянными unit tests) теоретически влечёт за собой возможную просадку производительности (ex : "Replace Type With Class", "Extract Interface") и НАОБОРОТ, оптимизация фортрановского кода (напр разввёртывание мелких циклов и введение inline подстановок может ухудшить дизайн.

По поводу 70% времени расчёта логарифма - это конечно нехорошо. Но я к сожалению не специалист в фортране. И поэтому ничего не могу предложить, кроме как использовать ассемблер для вызова hardware функции логарифма. Можно, конечно покурить текст на предмет чистой алгоритмизации, но мне почему-то кажется что там с этим всё в порядке. Фортран - язык математиков и мне трудно себе представить чтобы математик избрал алгоритм с плохой оценкой behavior.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065048
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nКакая связь между выигрышем от рефакторинга и поддержки языком парадигм ООП?

Прямая.


Никакой. Хотя сейчас выражусь довольно флеймово. Устал, как собака, может на первоначальный вопрос поотвечаю потом.

Значит, по какой-то таинственной причине C++ медленнее Fortan-а в вычислительных задачах. То есть, пропадигма ООП не слишком помогает самому C++, зачем навязывать её фортрану.
Всё же ООП в Fortran-е есть, начиная с Fortran 2003. Но популярные компиляторы соответствуют Fortran 95. В них добавляются расширения из Fortran 2003 и 2008, но как раз на ООП (в GCC и Sun Studio). Значит, не очень то нужно. В Fortran-е 90 и 95 можно имитировать классы с помощью модулей. Не уверен, что есть смысл, ознакомиться самостоятельно. Однако поддержка модульности в Fortran-е важна, и программа в 4500 строк уже достаточно большая, чтобы поделить её на модули (не для эффективности, а для дпльнейшего развития).
Вообще, частой ошибкой "плюсистов" является попытка перенести свои знания С++ на другие языки. Вот отличается язык от C++ - "значит", он хуже, чем C++. На самом деле значит, что надо знать другой язык. А то бывает: "а почему в Java нет указателей?". Или тяжёлый случай - один участник форума ixbt стал демонстрировать, как он добавил RAII из C++ в Java и Haskell... где они не нужны и невозможны. Это уже кандидат в психушку.
Вот, закончил флейм.

Подробного рассмотрения задачи сейчас не буду делать, но большое число вычисление логарифма подозрительно. Если считается 3 недели и 70% тратится на логарифмы, то значит - 2 недели вычисления одних логарифмов. Или профилирование неправильное, или логарифмы вычисляются повторно (такие лишние вычисления часто бывают во вложенных циклах). Может перед каждым LOG вызовов, а в программу понадобавлять вывод времени работы каждой функции или сложного участка кода - это поможет увидеть, правильное ли профилирование, да и определить участок программы, наиболее нуждающийся в оптимизации.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065162
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторФортран - язык математиков и мне трудно себе представить чтобы математик избрал алгоритм с плохой оценкой behavior.

Если б Вы только знали как Вы заблуждаетесь. Я просто легенды знаю из разряда - "ну да, эта задача вообще некорректно поставлена, но Вы сходите голубчик к вычислителям, они Вам посоветуют как тут можно чего-нибудь подвертеть".

авторЗначит, по какой-то таинственной причине C++ медленнее Fortan-а в вычислительных задачах. То есть, пропадигма ООП не слишком помогает самому C++, зачем навязывать её фортрану.

Вы по-видимому мне отвечаете, поэтому хотелось бы понять как это вытекает из того что я тут пописывал. Ладно, пусть так - если имеется математика написанная на процедурном языке и применение рефакторинга позволяет существенно чего то там улучшить, то херово всё это было написано с самого начала. Мне в прошлом веке доводилось писать новые процедуры для достаточно приличной отраслевой мат библиотеки на фортране - этот проект успешно развивался около 10 лет и такие слова как рефакторинг тогда воопще только пьяные грузчики употребляли.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065199
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nКакая связь между выигрышем от рефакторинга и поддержки языком парадигм ООП?

Прямая. Вот все те хорошие и умные слова которые Вы написали про рефакторинг реально применимы к ООП (может ещё к чему, например функциональному программированию и т.д. но я этих вещей не знаю, поэтому не стану судить). Я понимаю рефакторинг как изменение логической организации структуры построения классов в ООП языке с целью достижения всего того что Вы написали.Теперь понятно. Но так как остальному миру приходится жить своим умом независимо от вашего понимания...mikhail_n А вот каким макаром применять рефакторинг к математике написанной в процедурном стиле я не понимаю.
И это естественно после "изобретения" своего понятия рефакторинг, в отсутствии реального опыта программированияmikhail_n Единстенно что я могу себе вообразить -
Вы узнаёте что некий мат метод реализованный в Вашей библиотеке одним способом может быть рализован гораздо эффективнее путём применения более нового алгоритма.Это только говорит о вашем опыте и вашей способности к воображению, но имеет малое отношение к реальной жизни. mikhail_n Ну вы переписывате свою процедуру, удаляете из библиотеки старую и добавляете новую с тем же именем. Ну да, предётся пересобрать все исполняемые файлы явно или неявно обращаюшиеся к этой процедуре. Но называть это рефакторингом...Да, я и никогда не называл. Сам для себя его "изобрел" и применял его без лишних слов. Когда "появилось" слово "рефакторинг" в применении к программированию,
сначала догадался, что это такое, исходя из обычного, математического понятия factoring :factorization
factorization(also factorisation in British English) or factoring is the decomposition of an object (for example, a number, a polynomial, or a matrix) into a product of other objects, or factors, which when multiplied together give the original.
...
The aim of factoring is usually to reduce something to "basic building blocks,"
..., а потом справился о его значении в новом смысле. Вы же ознакомившись с каким-то одним конкретным приемом рефакторинга,
заменили все понятие этим одним конкретным его примером, ну и, естественно, получили малополезное, не применимое
в общем случае, понятие. Заодно попытались "отнять" название у полезной и иногда необходимой
деятельности. Так прочитав у ТС, что ему нужен "IDE для рефакторинга", я не зная о таком IDE и
не уверенный в его существовании, легко представил, что примерно он хочет сделать. Затем
он уточнил характер предполагаемых им изменений. Но это также могло быть простой заменой
простых "GO TO" или
арифметических "IF"-ов на вызовы подпрограмм или на другие управляющие конструкции, появившиеся
в современных версиях языка и отсутствовавшие в старых.
И вообще, "простейший пример рефакторинга - изменение идентификатора(например имени
переменной) в нечто более осмысленное, такое, например, как с одной букы 'i' на interestRate".
("The simplest example of a refactoring is to change an identifier (such as a variable name) into
something more meaningful, such as from a single letter 'i' to 'interestRate'"- отсюда:
Refactoring )
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065205
avb1003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n ... и такие слова как рефакторинг тогда воопще только пьяные грузчики употребляли.Ну и что. Г-н Журден до сорока лет не подозревал, что говорит прозой:
Мольер. «Мещанин во дворянстве»
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065223
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ вообще, "простейший пример рефакторинга - изменение идентификатора(например имени
переменной) в нечто более осмысленное, такое, например, как с одной букы 'i' на interestRate".

Нда, я где то так себе и представлял что присутствие авторреального опыта программирования (особенно на Фортране) именно так и проявляется.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065268
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n. А вот каким макаром применять рефакторинг к математике написанной в процедурном стиле я не понимаю. Единстенно что я могу себе вообразить - Вы узнаёте что некий мат метод реализованный в Вашей библиотеке одним способом может быть рализован гораздо эффективнее путём применения более нового алгоритма. .

чтото я Вас не узнаю.

есть определение
автор
Рефакторинг или реорганизация . процесс полного или частичного преобразования внутренней структуры програ
ммы при сохранении её внешнего поведения. В его основе лежит последовательность небольших эквивалентных (
то есть, сохраняющих поведение) преобразований.
...
В программировании термин рефакторинг означает изменение исходного кода программы без изменения его внешн
его поведения.


отсюда следует, что любое изменение текста есть рефакторинг.
Нет никаких ограничений на то, где она лежит. Может она в библиотеке, а может и нет.
Может переделанный код стал более эффективным, а может и менее.
Любоая переделка без изменения поведения есть рефакторинг
например, условие в if и ветки then else поменяли наоборот.



далее, господа, а именно,
avb1003 и mikhail_n, прошу покончить с обсуждением друг друга.
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065314
Самоловских Виталий aka Kefir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рефакторинг фортрановского кода происходит так:
1. для каждой строчки, в которой более или менее понятно что происходит, пишется комментарий.
2. попутно составляется словарь переменных. А то названия i,ii,iii,j,jj,jjj,k,kk,kkk,l,ll,lll,n,nn,nnn и т.п. не наглядны совсем.
3. все более или менее независимые куски кода выделяем в отдельные процедуры.
4. теперь когда мы сократили размер процедур до минимума начинаем распутывать и несчадно истреблять все конструкции GOTO. Сворачиваем все
5. повторяем шаг 3.
6. ищем похожие процедуры, пытаемся их универсализировать.

ну и потом оптимизация
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065332
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виталий, мне остаётся встать и поаплодировать. Ты любую науку можешь разложить в десяток тезисов?
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36065507
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mindstream
2) Люто бешено поработал над софтиной профайлером и выяснилось, что 70% времени уходит на вычисление логарифма. Существуют ли реализации алгоритма расчета логарифма или библиотеки с его реализацией?
Спасибо.

В зависимости от данных и скорости вычисления логарифма, может помочь кеширование каких-то отдельных функций (если часто вызывается с одними и теми же параметрами), но тут я никаких гарантий не дам-надо смотреть данные и пробовать
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36068281
junior idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самоловских Виталий aka Kefir4. теперь когда мы сократили размер процедур до минимума начинаем распутывать и несчадно истреблять все конструкции GOTO. Сворачиваем все
... особенно злостные попытки по-простому выйти из трех (и более) вложенных циклов, ведь нефиг жеж!!!
...
Рейтинг: 0 / 0
Оптимизация и рефакторинг кода на fortran'е
    #36070388
mindstream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз благодарю всех отписавшихся)

Итак, про рефакторинг. Все-таки (по моему не шибко авторитетному мнению бгг =) ) рефакторинг можно проводить для языка с любой парадигмой, бо на sql'ных проектах он тоже как-то делается, а ООП в sql не шибко пахнет =). Поэтому пока засел за повышение читабельности кода (на кафедре любят переменные вида tt, tt1, tt2 итд =) ). К сожалению больше адекватных IDE не нашел, поэтому приходится все делать руками и find&replace. Тестов тоже нету, ибо такой код, да еще и с глобальными переменными тестировать пока нереально =) Единственный вариант тестирования, который смог прикрутить - автоматический прогон небольшого количества тестовых данных и сравнение их с результатами референсного бинарника.

Про логарифмы. К сожалению требуемая точность такова (8 байт, да), что закешировать все варианты не представляется возможным. В задаче просчитывается пролет большого количества электронов на большом количестве шагов, поэтому потеря одного знака к концу прогона ведет к совершенно диким ошибкам (пробовали кешировать отдельные значения и между ними экстраполировать, не помогло). Ну и сложность алгоритма при этом получается O(n^3), и это печально. Надеюсь к концу выходных добить вопросы читабельности и вплотную заняться переработкой структуры кода.

ЗЫ: у кого-то есть опыт установки Sun studio 12? Никак эту заразу поднять не могу - то netbeans ставиться отказываются, то еще какие-то проблемы =( Пробовал на свежеподнятых дистрибутивах fedora 8 и mandriva 2009.0. К сожалению в линуксах не спец, поэтому адекватно оценить ситуацию не смог по тем ошибкам, которые мне установщики выдавали. Мануалы читал =) Помогите с этим, пожалуйста!

Модератор:
посетители форума Unix - системы сюда тоже, конечно, захаживают
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Оптимизация и рефакторинг кода на fortran'е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]