Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
ВнизКакая конструкция работает быстрее Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c