PphantomЦитата:
Только
.
Ой, да, опечатался.
Цитата:
Практически все современные компиляторы поддерживают integer(8). Надеюсь, этого хватит.
Ну, я тут интересовался скорее из соображений "чтобы знать", нежели действительно беспокоился за то, что у меня памяти не хватит.
Цитата:
Первый банальный совет - воспользоваться циклом со счетчиком вместо его эрзаца, организованного вручную:
Это, вообще говоря, "пережиток прошлого", когда я проверял не совпадут ли координаты двух точек. Но решил, что раз это событие практически невероятное, то смысла в этом особого нет, а вот сменить while на do при этом забыл.
Цитата:
Второй, менее банальный (хотя и ненамного) совет - не использовать составные типы без явной и сильной необходимости. В данном случае данные проще хранить не в массиве записей, а в одном двумерном массиве, например, таком: real(8),dimension(0:3,1:N) :: lattice (считая, что первый индекс 0 соответствует полю R). Это, в частности, позволило бы вместо всего пресловутого цикла написать просто:
А насколько это в целом влияет на производительность, например? Просто это обусловлено в целом соображениями удобства, так как реально дальше полей будет больше и они несут в себе определённый физический смысл. Сильно ли выгоднее заменить массив составного типа на двумерный вида real(8),dimension(1:k,1:N) :: lattice? Конечно, удобство мне важно (я и так-то сильно путаюсь в фортране
), но производительность важнее, пожалуй.