Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-88011
Алексий
2003-03-12 17:33
2003.03.27
получить время создания файла


1-88020
VD601
2003-03-14 13:05
2003.03.27
Философско системный вопрос - зачем вообще указатели?


14-88219
Дмитрий К.К.
2003-03-10 08:44
2003.03.27
Именинники 10 марта


1-88056
pet
2003-03-15 13:41
2003.03.27
Другое приложение и трей


1-88040
ki11er
2003-03-14 19:40
2003.03.27
Какая разница между override, reintroduce и





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский