Главная страница
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.017 c
1-87922
Oops
2003-03-17 13:06
2003.03.27
Запрещение удаления символов маски с Маски Ввода


14-88195
GLM
2003-03-11 11:16
2003.03.27
проблема с 1С: предприятие


1-88004
Sergei
2003-03-14 09:21
2003.03.27
Вопрос по TLabel


3-87883
T{}r(l-l
2003-03-11 11:12
2003.03.27
Cursor+MSSQL


3-87793
Behemoth
2003-03-07 12:01
2003.03.27
Поможите настроить псевдоним через ODBC