2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Массив или не массив?
Сообщение26.12.2010, 12:25 
Аватара пользователя
Использование массива из трех элементов, вместо создания трех переменных - экономичнее? :?

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 12:40 
Аватара пользователя
С точки зрения времени выполнения - экономичнее отдельные переменные. Но с точки зрения удобочитаемости программы, её понятности, объёма кода, гибкости к изменениям - массивы экономичнее.

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 13:22 
Аватара пользователя
По скорости не важно компилятор с оптимизирует. А вот пользователю удобнее использовать массив.
Правило просто если более 3 то группируем в массив.

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 14:20 
По-моему, запись
Код:
y0:=...;  y1:=...;  y2:=...;

гораздо удобочитаемее, чем
Код:
y[0]:=...;  y[1]:=...  y[2]:=...;

Массивы полезны ровно тогда, когда они полезны -- когда предстоит использовать переменные в качестве индексов. Или когда надо будет присваивать что-то группе переменных как целому (в частности, при передаче параметров в процедуру). А в общем -- это в значительной степени дело вкуса.

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 15:56 
Аватара пользователя

(Оффтоп)

Помню, на первом или втором курсе один товарищ, явный противник показа текста программы (ну работает же, чего смотреть-то?!) сделал садистскую программу. Она текст программы (на паскале) форматировала прямоугольником, а все вводимые в программе идентификаторы заменяла на _001, _002 и так далее. Получалось где-то так:
Код:
program _001;var _002: Integer; function _003(_004, _005:Int
eger):Integer;begin _006 := _004 + _005;end; begin _002:= _0
03(1,2);Writeln(_002);end.

Так что я за переменные, да.

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 17:12 
За исключением специальных случаев, вроде применения всяких там векторных расширений, использование отдельных переменных может дать выигрыш в скорости (во-первых, компилятор может положить переменные в регистры, во-вторых, нет оверхеда по арифметике указателей). Хотя-да, компилятор может все равно соптимизировать все на свой лад...

Если есть хоть малейшее подозрение, что массив может стать больше, то срабатывает аргумент gris'а, в противном случае, особенно если объектов всего несколько, больше подходит довод ewert'а. В последнем случае (при использовании отдельных переменных) появляется возможность повысить читабельность кода более четко обозначив семантику переменных путем выбора подходящих имен; в конце концов, переменные можно сгруппировать в структуру и пользоваться ею как целым, например уж лучше писать что-то вроде vector.x=0 чем vector[0]=0.

Таким образом, я считаю, что массивы лучше использовать только при необходимости обработки очень большого количества однотипных элементов, а так сгодятся отдельные переменные и структуры (записи).

P.S.: Ага, надо было тему оформить как голосование. :)

 
 
 
 Re: Массив или не массив?
Сообщение26.12.2010, 21:28 
Если переменные имеют одинаковый смысл, то логичнее массив, потому что его смысл - объединение однородных данных под одним именем.
Автор, вы случайно не из ШАДа?

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group