Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Повторить какуюнибудь процедуру или функцию несколько раз   Найти похожие ветки 

 
Дмитрий_177   (2006-02-03 17:54) [0]

Как лучше всего повторить какуюнибудь процедуру или функцию несколько раз? Я делаю так, если нужно повторить например 10 раз:

var
 i: Byte;

for i := 0 to 9 do
 func

Но вопрос в том, что удачное так использования цикла, если в нем нигде не используется i? или можно еще какнибудь без цикла выполнить процедуру несколько раз?


 
Гошик Кувшинов   (2006-02-03 18:04) [1]

нормальное использование. в паскале нет циклов с заданным количеством повторений и без переменных, какие были например в рапире, так что всё в порядке

только переменную лучше объяви не как байт а как интергер или кардинал - 32-разрядные процессоры с ними быстрее работают, а экономия памяти копеечная


 
Дмитрий_177   (2006-02-03 18:11) [2]

Спасибо... я не знал про Byte с Integer...


 
vrem   (2006-02-03 18:19) [3]

Если на десятом разе функция выдаёт что то определённое, то можно и без переменной цикла. через while

рапира..) наука и жизнь и рассуждения что рапира лучше, Кувшинов, а как Вы к моржеванию относитесь? ;)


 
Zeqfreed ©   (2006-02-03 18:19) [4]

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


 
Gero ©   (2006-02-03 18:22) [5]

Неужели 4 байта это критично?


 
Гошик Кувшинов   (2006-02-03 18:57) [6]

verm

я не говорил, что рапира лучше, я и не программировал на ней, просто в школе был один обзорный урок, я кое-что запомнил. но операторы русскими буквами - ужас

а моржевание тут причём? не понял... я только когда тепло купаюсь


 
vrem   (2006-02-03 19:02) [7]

Кувшинов
Товарищ один пропал.. думал ну - а нет.)


 
TUser ©   (2006-02-03 19:45) [8]


> только переменную лучше объяви не как байт а как интергер
> или кардинал - 32-разрядные процессоры с ними быстрее работают,
>  а экономия памяти копеечная

Зато при переходе на integer мы получим немеренное ускорение, аж на 10 итерациях цикла.


 
Anatoly Podgoretsky ©   (2006-02-03 20:44) [9]

TUser ©   (03.02.06 19:45) [8]
Я не уверен, что при использовании байте не будет внутреннего преобразования в Integer.

Кроме того почему цикл от 0 до 9, а не от 2 до 10, что бы в голове делать прибавление единички.

Писать надо сразу правильно, чтобы в будущем не было мучительно стыдно за бездумно потраченые годы.

Теперь по поводу экономии трех байт, если переменная I локальная, то это не экономия, а потери.


 
TUser ©   (2006-02-03 21:55) [10]

> Anatoly Podgoretsky ©   (03.02.06 20:44) [9]

Я говорил неоднократно - на наких тараканах экономить память или увеличивать скорость - бессмысленно. Вы сами говорили, что скорость программы надо мерить будильником. Действительно - если программа работает за 0.00001 секунды, то не надо ускорять. А если за десять минут, то ускорение на 0.00001% ничего не изменит.


 
vidiv ©   (2006-02-03 22:03) [11]


> TUser ©   (03.02.06 21:55) [10]

Это они так... для просвещения :)


 
Германн ©   (2006-02-04 01:38) [12]


> Но вопрос в том, что удачное так использования цикла, если
> в нем нигде не используется i?

Уже много сказано про i, но добавлю ещё капельку. Переменную цикла можно всеми и всегда использовать справа от оператора присваивания. Но вот использование её слева - недопустимо!


 
Loginov Dmitry ©   (2006-02-04 09:21) [13]

Вообще не вижу смысла использовать тип Byte вместо Integer для счетчика цикла (хоть локально, хоть глобально). Одно время были такие причуды - после прочтения книжки по ассемблеру старался экономить на каждом байте :)
Однако на практике приходилось потом переобъявлять переменные, как Integer.

P.S. Экономьте только там, где экономия реально нужна.


 
YurikGL ©   (2006-02-04 09:53) [14]


> var
>  i: Byte;
>
> for i := 0 to 9 do
>  func

ИМХО лучше

var
 i: integer;

for i := 1 to 10 do
 func


 
Anatoly Podgoretsky ©   (2006-02-04 13:06) [15]

vidiv ©   (03.02.06 22:03) [11]
Это не мне дали 15 суток, а нам, чтобы ты мог проводить воспитательную работу.
(С) Операция Ы


 
Дмитрий_177   (2006-02-04 13:41) [16]

А вот по поводу цикла... что лучше от 0 до 9 или от 1 до 10... Мне почему-то казалось что лучше от 0 до 9...)))


 
sniknik ©   (2006-02-04 13:49) [17]

> Мне почему-то казалось что лучше от 0 до 9...)))
ну если разговор об экономии (ресурсы/время) то лучше с 9 downto 0, но на это оптимизатор и сам исправит.


 
Дмитрий_177   (2006-02-04 14:04) [18]

а в чем разница? 0->9 и 9->0? :)


 
sniknik ©   (2006-02-04 14:15) [19]

в выходе из цикла, проверка на 0 после операции гораздо "легче" чем сравнение переменной с конкретным числом. а так как такая проверка идет в каждой итерации цикла... есть небольшой выигрыш во времени.
(впрочем может для нынешних процессоров нет разницы на операторы (не в курсе)... но раньше точно была и оптимизатор "настроен" на тоже, то что есть.)



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.314 c
2-1138684231
Sirus
2006-01-31 08:10
2006.02.19
Реализация парольного доступа


6-1131460316
vishnia
2005-11-08 17:31
2006.02.19
Работа ISAPI DLL


2-1139069561
Michael5
2006-02-04 19:12
2006.02.19
Вопрос по OpenGL, программа не работает, подскажите, в чем дело!


8-1126128994
dzugaru
2005-09-08 01:36
2006.02.19
Выцветающий экран


15-1138632839
Arazel
2006-01-30 17:53
2006.02.19
Где можно прочитать про Характиристику MSSQL