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

Вниз

Какая конструкция работает быстрее   Найти похожие ветки 

 
andrey_pst ©   (2003-03-18 09:28) [0]

Вопрос риторический:

Какая конструкция работает быстрее ?
1) nStr := nStr + 1;
2) Inc(nStr);


 
ЮЮ ©   (2003-03-18 09:33) [1]

Ответ столь же риторический: Вряд ли здесь главные тормоза твоего алгоритма.


 
Digitman ©   (2003-03-18 09:51) [2]

если следующий по ходу алгоритма оператор не будет оператором сравнения nStr с чем-то, то в подавляющем большинстве случаев оптимизатор подставит "переведет" обе строчки в обдну и ту же маш.инструкцию - INC


 
Anatoly Podgoretsky ©   (2003-03-18 09:57) [3]

andrey_pst © (18.03.03 09:28)
CPU window тебе помощник

nStr := nStr + 1; как правило Inc(nStr)
Inc(nStr,N); переведет в nStr := nStr + N

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


 
Johnmen ©   (2003-03-18 10:12) [4]

>Digitman © (18.03.03 09:51)

Даже если будет оператором сравнения nStr с чем-то, то - INC. :)


 
Digitman ©   (2003-03-18 10:30) [5]


> Johnmen


Пардон, не инструкция сравнения, а инструкция усл.перехода
а INC не все флаги устанавливает


 
Johnmen ©   (2003-03-18 10:46) [6]

>Digitman

Может я не догоняю :), но придумать последовательность операторов, приводящую к генерации кода, когда за INC идет J.. не могу...


 
han_malign ©   (2003-03-18 11:02) [7]

> Johnmen © (18.03.03 10:46)
- i:=-3; repeat DoSome(i); inc(i); until(i<>0);
(по переполнению разрядной сетки)


 
Johnmen ©   (2003-03-18 11:13) [8]

>han_malign © (18.03.03 11:02)

Не-а...:)
Где тут переполнение ? :)


 
Digitman ©   (2003-03-18 11:45) [9]

Опять же - рез-т работы оптимизатора в том или ином случае зависит от типа nStr

Например, если

var nStr: Int64

и оптимизатор - 32-разрядный, то

то Inc(nStr) превращается в два подряд идущих ADC

а nStr := nStr + 1 превращается в целых 6 маш.инструкций (4 пересылки - прямая и обратная, и ADD + ADC между ними)


 
Digitman ©   (2003-03-18 11:46) [10]

пардон, для Inc() - > ADD + ADC


 
Johnmen ©   (2003-03-18 11:58) [11]

>Digitman ©

Согласен.
Хотя навряд ли автор использовал int64.
А для integer - что в лоб, что по лбу...:)


 
Digitman ©   (2003-03-18 12:04) [12]


> Johnmen


А вот для точной ориентации во всей этой ботве автору следует отказаться от риторики и подходить к вопросу с полной конкретикой)


 
NetKnight ©   (2003-03-18 12:13) [13]

По моему inc на асеммблер так и переводится как инструкция inc, а она на сколько я знаю быстрее.. Или я ошибся ? :)



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

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

Наверх




Память: 0.49 MB
Время: 0.019 c
3-87818
digester
2003-03-09 12:34
2003.03.27
Работа с временем и датой.


14-88224
godfather
2003-03-11 11:57
2003.03.27
надо ли платить


1-88048
homo sapiens
2003-03-12 11:15
2003.03.27
Scheduler


3-87819
a123
2003-03-05 18:54
2003.03.27
Русский язык в InterBase


7-88282
zyurik
2003-02-02 00:55
2003.03.27
Реестр