![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Повторить какуюнибудь процедуру или функцию несколько раз [D7, WinXP]
Дмитрий_177 © (2006-02-03 17:54:00)Как лучше всего повторить какуюнибудь процедуру или функцию несколько раз? Я делаю так, если нужно повторить например 10 раз:
var
i: Byte;
for i := 0 to 9 do
func
Но вопрос в том, что удачное так использования цикла, если в нем нигде не используется i? или можно еще какнибудь без цикла выполнить процедуру несколько раз?
sniknik (2006-02-04 14:15:00) [1]в выходе из цикла, проверка на 0 после операции гораздо "легче" чем сравнение переменной с конкретным числом. а так как такая проверка идет в каждой итерации цикла... есть небольшой выигрыш во времени.
(впрочем может для нынешних процессоров нет разницы на операторы (не в курсе)... но раньше точно была и оптимизатор "настроен" на тоже, то что есть.)
Дмитрий_177 (2006-02-04 14:04:00) [2]а в чем разница? 0->9 и 9->0? :)
sniknik (2006-02-04 13:49:00) [3]> Мне почему-то казалось что лучше от 0 до 9...)))
ну если разговор об экономии (ресурсы/время) то лучше с 9 downto 0, но на это оптимизатор и сам исправит.
Дмитрий_177 (2006-02-04 13:41:00) [4]А вот по поводу цикла... что лучше от 0 до 9 или от 1 до 10... Мне почему-то казалось что лучше от 0 до 9...)))
Anatoly Podgoretsky (2006-02-04 13:06:00) [5]vidiv © (03.02.06 22:03) [11]
Это не мне дали 15 суток, а нам, чтобы ты мог проводить воспитательную работу.
(С) Операция Ы
YurikGL (2006-02-04 09:53:00) [6]
> var
> i: Byte;
>
> for i := 0 to 9 do
> func
ИМХО лучше
var
i: integer;
for i := 1 to 10 do
func
Loginov Dmitry (2006-02-04 09:21:00) [7]Вообще не вижу смысла использовать тип Byte вместо Integer для счетчика цикла(хоть локально, хоть глобально). Одно время были такие причуды - после прочтения книжки по ассемблеру старался экономить на каждом байте :)
Однако на практике приходилось потом переобъявлять переменные, как Integer.
P.S. Экономьте только там, где экономия реально нужна.
Германн (2006-02-04 01:38:00) [8]
> Но вопрос в том, что удачное так использования цикла, если
> в нем нигде не используется i?
Уже много сказано про i, но добавлю ещё капельку. Переменную цикла можно всеми и всегда использовать справа от оператора присваивания. Но вот использование её слева - недопустимо!
vidiv (2006-02-03 22:03:00) [9]
> TUser © (03.02.06 21:55) [10]
Это они так... для просвещения :)
TUser (2006-02-03 21:55:00) [10]> Anatoly Podgoretsky © (03.02.06 20:44) [9]
Я говорил неоднократно - на наких тараканах экономить память или увеличивать скорость - бессмысленно. Вы сами говорили, что скорость программы надо мерить будильником. Действительно - если программа работает за 0.00001 секунды, то не надо ускорять. А если за десять минут, то ускорение на 0.00001% ничего не изменит.
Anatoly Podgoretsky (2006-02-03 20:44:00) [11]TUser © (03.02.06 19:45) [8]
Я не уверен, что при использовании байте не будет внутреннего преобразования в Integer.
Кроме того почему цикл от 0 до 9, а не от 2 до 10, что бы в голове делать прибавление единички.
Писать надо сразу правильно, чтобы в будущем не было мучительно стыдно за бездумно потраченые годы.
Теперь по поводу экономии трех байт, если переменная I локальная, то это не экономия, а потери.
TUser (2006-02-03 19:45:00) [12]
> только переменную лучше объяви не как байт а как интергер
> или кардинал - 32-разрядные процессоры с ними быстрее работают,
> а экономия памяти копеечная
Зато при переходе на integer мы получим немеренное ускорение, аж на 10 итерациях цикла.
vrem (2006-02-03 19:02:00) [13]Кувшинов
Товарищ один пропал.. думал ну - а нет.)
Гошик Кувшинов (2006-02-03 18:57:00) [14]verm
я не говорил, что рапира лучше, я и не программировал на ней, просто в школе был один обзорный урок, я кое-что запомнил. но операторы русскими буквами - ужас
а моржевание тут причём? не понял... я только когда тепло купаюсь
Gero (2006-02-03 18:22:00) [15]Неужели 4 байта это критично?
Zeqfreed (2006-02-03 18:19:00) [16]Скорее всего место в стеке под счетчик цикла не будет выделяться, будет использован один из регистров процессора. Так что не стоит экономить на счетчиках цикла :)
vrem (2006-02-03 18:19:00) [17]Если на десятом разе функция выдаёт что то определённое, то можно и без переменной цикла. через while
рапира..) наука и жизнь и рассуждения что рапира лучше, Кувшинов, а как Вы к моржеванию относитесь? ;)
Дмитрий_177 (2006-02-03 18:11:00) [18]Спасибо... я не знал про Byte с Integer...
Гошик Кувшинов (2006-02-03 18:04:00) [19]нормальное использование. в паскале нет циклов с заданным количеством повторений и без переменных, какие были например в рапире, так что всё в порядке
только переменную лучше объяви не как байт а как интергер или кардинал - 32-разрядные процессоры с ними быстрее работают, а экономия памяти копеечная