информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Phrack #70/0x46 
 Возможно, Facebook наступил на... 
 50 лет электронной почте 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Просто фортран предназначен для физико-математических... 04.08.05 19:19  Число просмотров: 2117
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Поработал с WIN32 API на Фортране. Кстати есть мнение, что,
> при всех достоинствах С, для задач численного моделирования
> Фортран дает более быстрый код чем С.

Просто фортран предназначен для физико-математических расчетов. Эффектифность кода у этих языков почти равна и сильно зависит от компилятора, а кодить формулы лучше на фортране :).

> DPP, а как это без массивов?

Возмем, к примеру, задачу: "Файл представляет собой последовательность байт. Требуется подсчитать сколько раз в нем встречается заданный байт". Однозначно проще и быстрее всего будет считать файл в массив и циклично перебрав все байты посчитать количество заданных, чем читать файл побайтно. В последнем случае слишком много накладных расходов - один запрос на прочтение байта может занимать времени столько же, сколько и прочтение сотен или тысяч байт.

Есть задачи, которые на первый взгляд элементарно решаются с использованием массивов и не решаются без них. Возмем, например, такую задачу: "Последовательно вводятся числа. Как только будет введено заданное число (например ноль), нужно вывести второе максимальное число (не самое максимальное, а то, что меньше него, но больше всех остальных)". Сразу хочется написать ввод чисел в массив (со счетчиком количества введеных чисел), упорядочение их по возрастанию (как только будет введен ноль) и выдачу второго элемента массива. Однако непонятно какого объема нужно заводить массив? Вводится может и миллион и милиард и более чисел. Получается, что ее нельзя решить используя массив, даже динамически увеличивающийся, поскольку объем памяти ограничен. Зато легко можно решить не используя массив вообще.

Получаем интересный вывод: "Какой бы большой массив использовался в программе, его может не хватить. Какой бы небольшой массив не использовался в программе, он может быть не использоваться и на один процент за все время эксплуатации программы. Динамическое выделение памяти лишь позволяет эффективнее пользоваться памятью. А задача должна быть универсальна и обрабатывать столько данных, сколько ей подсунули, а не на сколько она расчитана". Иногда лучше последовательно считывать и обрабатывать данные, особенно там, где их можно обработать за один проход, пусть даже в ущерб скорости, если потеря скорости будет не велика.
Причем следует учесть возможности современных ОС. При превом считывании данных из файла весь файл может осесть в кеши и оставаться в нем до выключении компьютера, а передача данных из ОЗУ (файловый кеш) в ОЗУ (переменные программы) достаточно быстра, по сравнению с чтением с накопителя, хотя и больше будет накладных расходов на обращения к ОС при чтении данных.

> Еще раз спасибо за ответы.
<beginners> Поиск 








Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach