Re[5]: Что быстрее
От: kleng  
Дата: 26.07.14 15:48
Оценка: 1 (1) +2
Здравствуйте, abibok, Вы писали:

A>А если предположить, что тимлид не идиот?


А ведет себя, как идиот. Странно.
Re[2]: Что быстрее
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 26.07.14 00:44
Оценка: +1 :))
Здравствуйте, Engler, Вы писали:

A>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


E>Тогда как для двойки 0000010 нужно сделать сдвиг и потом сравнить ...


Уже не пройдешь. Очевидно, что:
1) компилятор это преобразует к while (true) еще в compile time и разницы не будет, в смысле в ассемблере там будет безусловный переход и сравнения не будет.
2) у меня есть какое-то сомнение, что для того, чтобы сделать cmp xx/j[n]z процессор что-то там сдвигает. Процессор это такой большой колебательный контур с транзисторами и контактами, схему сделать которая выполняет or всех битов из проводочков даже 10-летний ребенок сделает, уже не говоря, что там таблички для вычисления скорее всего вообще всей арифметики вшиты.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re: Что быстрее
От: CreatorCray  
Дата: 26.07.14 09:50
Оценка: :)))
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Ну давай подумаем:
while (0) выполняется мнгновенно.
while (1) очевидно медленее
значит while (2) должно выполняться ещё медленее
ну а while (100500) должно просто зверски тормозить
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Что быстрее
От: kleng  
Дата: 26.07.14 00:41
Оценка: 1 (1) :)
Здравствуйте, abibok, Вы писали:

A>Годится, а что еще? Вопрос задан на собеседовании, с вами разговаривает ваш будущий (возможно) Team Lead.


Разворачиваюсь и ухожу. Не хочу работать с тимлидом-идиотом.
Re[4]: Что быстрее
От: Trrrrr  
Дата: 27.07.14 15:25
Оценка: +2
Не вы не правы Прочитайте про мощность множества.
бесконечные множества так сравнивать нельзя.
В общем они одинаковые, вот если записать оба ряда в таком виде, то будет очевидно:
1 2 3 4 5 6 7
0 -1 1 -2 2 -3 3...

Как видите, все одинаково
Re[4]: Что быстрее
От: Aртём Австралия жж
Дата: 26.07.14 05:01
Оценка: 4 (1)
Здравствуйте, __kot2, Вы писали:

__>while (1) однозначно кодируется в команду БЕЗусловного перехода



http://stackoverflow.com/questions/24848359/which-is-faster-while1-or-while2

Для GCC да.

Для MSVC:

Here is an example code generated by the compiler on my system (MS Visual Studio 2012), with optimizations turned off:

yyy:
xor eax, eax
cmp eax, 1 (or 2, depending on your code)
je xxx
jmp yyy
xxx:
...


Я к тому, что неоднозначно но даже с условным переходом проверка на равенство нулю.
Re[3]: Что быстрее
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.07.14 14:06
Оценка: 3 (1)
Здравствуйте, Ikemefula, Вы писали:

A>>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


I>>Смотря что будет в троеточии


I>Кроме того, никогда не мешае переспросить, уточнить и тд. Возможно, как в реальности, имеет место попытка решения некотрой проблемы, сформулированой вот таким вот образом. Тогда можно попытаться переформулировать задачу и вместо 'что быстрее' будет 'как замерить загрузку процессора'


И последнее — если интервьюер не в курсе специфики задачи, то есть тупо взял потому что 'на форуме обсуждают' то он сам подставляется. Здесь можно попытаться прогнуть его на предмет проврки 'а угадайте что у меня в левой руке'
Если проверку не пройдет, есть большой шанс что и руководить будет так же

Но вообще, программисты изобретают велосипеды везде, в любой области с которой столкнутся. Так что проигнорировать такое задание будет так же не провальной тактикой
Re[3]: Что ещё есть?
От: eskimo82  
Дата: 28.07.14 18:06
Оценка: 2 (1)
CEM>А напиши в асме быстрый _конечный цикл? У меня вроде в три строки получалось.
А для какого процессора, под какую платформу ? И что писать в третью строку ?
     mov ecx, 100500
boo: loop boo
Re: Что быстрее
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.07.14 22:45
Оценка: 1 (1)
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


А по-моему, они одинаковые! (c)
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Что быстрее
От: abibok  
Дата: 25.07.14 22:41
Оценка: :)
Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?
Re[4]: Что быстрее
От: abibok  
Дата: 26.07.14 00:46
Оценка: :)
K>Разворачиваюсь и ухожу. Не хочу работать с тимлидом-идиотом.

А если предположить, что тимлид не идиот?
Re[3]: Что быстрее
От: мыщъх США http://nezumi-lab.org
Дата: 26.07.14 00:55
Оценка: +1
Здравствуйте, abibok, Вы писали:

ГВ>>А по-моему, они одинаковые! (c)


A>Годится, а что еще? Вопрос задан на собеседовании, с вами разговаривает ваш будущий (возможно) Team Lead.


ну как бы копиляторы ругаются на это матом. зато не ругаются на for(;). быстрее вообще что? исправить while(x) в for(;) или вкурить с какого бодуна тут while(2) ? я вот смотрю и думаю что, возможно, тут ошибка. возможно, автор хотел сказать while(A2). вы же не можете убедить меня в обратном без анализа прилегающего к while кода? так что при чтении исходников while(2) уж точно будет не быстрее, но рискует быть медленее, т.к. многие подвиснут в поисках ошибки, которой нет.

чисто абстрактно можно вообразить сферический компилятор под кубический процессор, который не делает оптимизации и где есть команда загрузить единицу в регистр, но нет команды загрузить двойку. и вообще константу можно загрузить только из памяти специальными командами, которые очень медленные.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Что быстрее
От: __kot2  
Дата: 26.07.14 01:15
Оценка: +1
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

Я бы сказал что и то и то транслируется в jmp
Re: Что быстрее
От: alpha21264 СССР  
Дата: 26.07.14 14:22
Оценка: -1
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


На дворе начало 21 века, а на собеседованиях до сих пор задают вопросы на тему "как быстрее".

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Что быстрее
От: eskimo82  
Дата: 26.07.14 16:03
Оценка: +1
aik>заменить в вопросе while(2) на while(cos(0)) — и вопрос заиграет новыми красками

Ну так в приличной рантайм библиотке функция cos имеет атрибут __pure, а поскольку зависит она от константы 0, то результат её вычисления является константой — ивариантом цикла, следовательно может быть вынесен "за скобки" приличным компилятором.

Микрософт, как пример неприличного компилятора, не предлагать
Re: Что быстрее
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.07.14 13:55
Оценка: +1
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Смотря что будет в троеточии
Если идентичный код в обоих вариантах и бесконечный цикл то задача решения не имеет ибо это неопределенность вида бесконечность делить на бесконечность, то есть тупо проблема останова

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

Если циклы неидентичные, то если цикл конечный быстрее будет тот что короче

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

Цель задачи вывести кандидата из зоны комфорта и посмотреть, как у него мозг работает. Некотрые устроят истерику с хлопаньем дверьми. Некоторые дадут односложный ответ. Некотрые дадут развернутый.

Самое главное — как интерпретировать и использовать результаты. Тут смотря кто нужен. Если нужен чел который думает как по рельсам ездит, то есть долго, консервативно, зато надежно, то надо смотреть из тех кто хлопнул дверьми. Главно проверить сколько груза они могу тащить по своим рельсам. Часто бывает что консервативные могу тащить столько, что три команды не угонятся. Но чуть сменил область — пиши пропало.

Если нужен более гибкий человек, то тех кто хлопнул дверью или стал смотреть на тебя как на говно, никого не брать, ни в коем случае
Re[3]: Профнепригоден ?
От: eskimo82  
Дата: 28.07.14 18:10
Оценка: :)
Внезапно, в других случаях только в одну строку и никак больше...

repne scasb


Я пытался сделать больше строк, но не смог
Re: Что быстрее
От: Крякозавр  
Дата: 30.07.14 16:05
Оценка: +1
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Так как язык программирования не задан, а по умолчанию у меня C#, то отвечу что на обоих вариантах будет получена ошибка компиляции примерно с одинаковой скоростью.
Re[2]: Что быстрее
От: abibok  
Дата: 25.07.14 22:57
Оценка:
ГВ>А по-моему, они одинаковые! (c)

Годится, а что еще? Вопрос задан на собеседовании, с вами разговаривает ваш будущий (возможно) Team Lead.
Re[3]: Что быстрее
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.07.14 23:01
Оценка:
Здравствуйте, abibok, Вы писали:

ГВ>>А по-моему, они одинаковые! (c)


A>Годится, а что еще? Вопрос задан на собеседовании, с вами разговаривает ваш будущий (возможно) Team Lead.


Зависит от настроения и размера куража, который меня нагонит. Может быть, скажу, что это два бесконечных цикла, а может быть — задам встречный вопрос и предложу сравнить с while(-1){...} и while(0){...}.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Что быстрее
От: Engler Беларусь  
Дата: 25.07.14 23:06
Оценка:
A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

С технической точки зрения, вероятнее всего, вопрос лишен смысла.

Ну а если рассмотреть, сферический ассемблер и аппаратную базу в вауккуме, то
теоретическое битовое предсавление 1 ( 0000...1 ) можно быстрее сравнить с 0, т.е отсекаем по певому биту.
Тогда как для двойки 0000010 нужно сделать сдвиг и потом сравнить ...
Это конечно, же если у нас двоичная система ...

Ну это второе что приходит на ум, первое это "мотать как можно быстрее"
Re: Что быстрее
От: D. Petrov США  
Дата: 26.07.14 00:38
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Если язык интерпретируемый то разницы нет, все одинаково медленно.
Если компилируемый — тоже разницы нет. Проверка условия соптимизируется на безусловный переход.
Re: Что быстрее
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 26.07.14 00:45
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

Ответ по-моему очевидный, меня больше интересует, а что ответил человек на вопрос, а нахрена он это спросил?
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[3]: Что быстрее
От: мыщъх США http://nezumi-lab.org
Дата: 26.07.14 01:10
Оценка:
Здравствуйте, Anatolix, Вы писали:

A>Здравствуйте, Engler, Вы писали:


A>>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


E>>Тогда как для двойки 0000010 нужно сделать сдвиг и потом сравнить ...


A>Уже не пройдешь. Очевидно, что:

A>1) компилятор это преобразует к while (true) еще в compile time и разницы не будет,
а, допустим, это JIT. он пытается это распарсить. конкретно — пытается убедиться, что 1 и 2 входят в [0-9]. как он это проверяет? это можно и так и эдак, но как бы допустимо начинать с нуля. типа это ноль? нет. это один? да. конец. тогда (1) будет чуточку быстрее (2). хотя мне сложно представить настолько тупой парсер.


так же компилятор не обязан выполнять преобразование в (true) на стадии компиляции. ведь компилятор не указан. может быть, это что-то очень простое и учебное. допустим, компилятор грузит константу в регистр и сравнивает на стадии выполнения. и тут выясняется, что вообще-то способов компактного представления единицы на всяких ЦП заметно больше, чем двойки. но это предполагает оптимизацию ассемблерного представления.


кстати, я видел несколько программ синтаксической раскраски в которых сначала искалась конструкция while(0|1) и только если нифуя не найдено while(const). в этом случае while(1) попадает под эвристический сценарий оптимизации и парсится очень быстро. а вот while(2) парсится на общих основаниях, что медленно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Что быстрее
От: ned Австралия  
Дата: 26.07.14 02:42
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Я думаю, что троеточие (aka ellipses) приведет к ошибке компиляции в обоих случаях.
Re: Музыкальный альбом while(1<2)
От: SergeCpp Россия http://zoozahita.ru
Дата: 26.07.14 03:38
Оценка:
Здравствуйте, abibok!

A> Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Проверяется ваше знакомство с музновинками? while(1&lt;2)

По сути — в сети много где обсуждают.

Может хитрый компилятор определяет TRUE как x==1 или как (x&1)!=0.
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Что быстрее
От: Aртём Австралия жж
Дата: 26.07.14 03:56
Оценка:
Здравствуйте, __kot2, Вы писали:

A>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

__>Я бы сказал что и то и то транслируется в jmp

И/или другие команды условного перехода (je, jnz...). Это такой троллинг наверное- ребята развлекаются.
Re[4]: Что быстрее
От: uncommon Ниоткуда  
Дата: 26.07.14 04:17
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>вкурить с какого бодуна тут while(2) ?


а слабо вкурить с какого бодуна может быть while(0,0)?
Re[3]: Что быстрее
От: __kot2  
Дата: 26.07.14 04:30
Оценка:
Здравствуйте, Aртём, Вы писали:
Aё>И/или другие команды условного перехода (je, jnz...). Это такой троллинг наверное- ребята развлекаются.
while (1) однозначно кодируется в команду БЕЗусловного перехода
Re[5]: Что быстрее
От: мыщъх США http://nezumi-lab.org
Дата: 26.07.14 04:35
Оценка:
Здравствуйте, uncommon, Вы писали:

U>Здравствуйте, мыщъх, Вы писали:


М>>вкурить с какого бодуна тут while(2) ?


U>а слабо вкурить с какого бодуна может быть while(0,0)?

дык comma. равносильно 0. а вот 0,1 вернет 1. еще можно написать return 0,1; при возвращении int или char.

теперь моя очередь. без компилятора — что делает: **x++ = **y++;
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Что быстрее
От: ned Австралия  
Дата: 26.07.14 06:56
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


А вот еще если код читать, то первый вариант однозначно быстрее.
Re: Что быстрее
От: AlexRK  
Дата: 26.07.14 07:55
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


А о каком языке программирования и каком компиляторе идет речь?
Re: Что быстрее
От: koodeer  
Дата: 26.07.14 08:09
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Как мне кажется, цифру 2 нажать можно чуточку быстрее, чем 1. До неё банально меньше тянуться. Но это может зависеть от клавиатуры и кто как привык держать руки.
Re: Что быстрее
От: mik1  
Дата: 26.07.14 09:45
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Годный вопрос. Отвечу, что в бесконечном цикле надо оптимизировать тело цикла, а не такое условие. Ну а дальше куда разговор понесет.
Re[3]: Что быстрее
От: Engler Беларусь  
Дата: 26.07.14 13:00
Оценка:
Здравствуйте, Anatolix, Вы писали:

A>Уже не пройдешь.


E> С технической точки зрения, вероятнее всего, вопрос лишен смысла.

E> Ну а если рассмотреть, сферический ассемблер и аппаратную базу в вауккуме , то

забыл дописать про сферический компилятов в вауукуме ...


А как бы Вы ответили?
Re[4]: Что быстрее - дополнение
От: Engler Беларусь  
Дата: 26.07.14 13:03
Оценка:
Здравствуйте, Engler, Вы писали:

E>А как бы Вы ответили?

При условии, что очевидно, это будет работать одинаково, в 99% случаев.
Re: Что быстрее
От: eskimo82  
Дата: 26.07.14 13:48
Оценка:
A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?
Зависит от того что стоит вместо троеточия.
Re[5]: Что быстрее
От: eskimo82  
Дата: 26.07.14 14:00
Оценка:
Aё>Для MSVC:
Aё>Я к тому, что неоднозначно но даже с условным переходом проверка на равенство нулю.
Ты в дебаге наверно собрал.
Re: Что быстрее
От: aik Австралия  
Дата: 26.07.14 15:28
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


заменить в вопросе while(2) на while(cos(0)) — и вопрос заиграет новыми красками
Re: Что быстрее
От: fin_81  
Дата: 26.07.14 16:03
Оценка:
- Не знаю. А ты/Вы?
От ответа будущего кандидата в мои начальники зависит будет он принят или нет
Re: Что быстрее
От: ro_man  
Дата: 26.07.14 17:43
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


Очевидно, что первое. Компилятору/машине все-равно, а человек на второе условие тупит чуть дольше.
Re[2]: Что быстрее
От: alzt  
Дата: 26.07.14 18:16
Оценка:
Здравствуйте, Engler, Вы писали:

A>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


E>С технической точки зрения, вероятнее всего, вопрос лишен смысла.


E>Ну а если рассмотреть, сферический ассемблер и аппаратную базу в вауккуме, то

E>теоретическое битовое предсавление 1 ( 0000...1 ) можно быстрее сравнить с 0, т.е отсекаем по певому биту.
E>Тогда как для двойки 0000010 нужно сделать сдвиг и потом сравнить ...
E>Это конечно, же если у нас двоичная система ...

E>Ну это второе что приходит на ум, первое это "мотать как можно быстрее"


Тогда вопрос — каких чисел больше: целых или натуральных?
Re[5]: Что быстрее
От: __kot2  
Дата: 26.07.14 19:20
Оценка:
Здравствуйте, Aртём, Вы писали:
Aё>Я к тому, что неоднозначно но даже с условным переходом проверка на равенство нулю.
вообще, я сначала было хотел еще добавить, что команды сравнения констант в процессоре нет
но мс компилятор действительно нашел выход!
Re: Что быстрее
От: ononim  
Дата: 26.07.14 20:24
Оценка:
A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?
Я лично всегда пишу пустой for. Интереса ради проверил все три варианта в VS2008 (я не некрофил, я любитель антиквариата ) , получил неожиданный результат в дизасме:
    for (;;)
    {
        printf("foo");
0040AD44  push        offset ___mnames+294h (40DDB8h) 
0040AD49  call        printf (4016FCh) 
0040AD4E  add         esp,4 
    }
0040AD51  jmp         wmain+4 (40AD44h) 

/////////////////////////////////////////////

    while (1)
0040AD44  mov         eax,1 
0040AD49  test        eax,eax 
0040AD4B  je          wmain+1Ch (40AD5Ch) 
    {
        printf("foo");
0040AD4D  push        offset ___mnames+294h (40DDB8h) 
0040AD52  call        printf (4016FCh) 
0040AD57  add         esp,4 
    }
0040AD5A  jmp         wmain+4 (40AD44h) 

/////////////////////////////////////////////

    while (2)
0040AD44  mov         eax,2 
0040AD49  test        eax,eax 
0040AD4B  je          wmain+1Ch (40AD5Ch) 
    {
        printf("foo");
0040AD4D  push        offset ___mnames+294h (40DDB8h) 
0040AD52  call        printf (4016FCh) 
0040AD57  add         esp,4 
    }
0040AD5A  jmp         wmain+4 (40AD44h)


И это релиз, с включенной оптимизацией на скорость
Как много веселых ребят, и все делают велосипед...
Re[3]: Что быстрее
От: Engler Беларусь  
Дата: 26.07.14 23:52
Оценка:
Здравствуйте, alzt, Вы писали:

A>Тогда вопрос — каких чисел больше: целых или натуральных?


Хм. Пока я не понимаю, к чему вопрос ведет , ну ладно.

Насколько я помню, множество целых чисел включает в себя множество натуральных.

Т.е натуральные это 1,2,3 и.т.д, а целые как минимум включают в себя еще и отрицательные числа.

=> целых чисел больше.
Re[6]: Что быстрее
От: Vain Россия google.ru
Дата: 27.07.14 01:11
Оценка:
Здравствуйте, kleng, Вы писали:

A>>А если предположить, что тимлид не идиот?

K>А ведет себя, как идиот. Странно.
ну тут как в поговорке про дураков
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: Что быстрее
От: uncommon Ниоткуда  
Дата: 27.07.14 01:39
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>теперь моя очередь. без компилятора — что делает: **x++ = **y++;


Я знаю, знаю! Это когда... [здесь я хотел написать пошлятину, но потом одумался и стер]
Re: Что быстрее
От: denisko http://sdeniskos.blogspot.com/
Дата: 27.07.14 14:20
Оценка:
Здравствуйте, abibok, Вы писали:

A>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

Конечно while(1). Ведь while(2) исполнится только после того, как будет выполнен while(1).
Если серьезно, то для какого нибудь извращенного компилятора может быть разница, т.к. это может быть эквивалентно (вроде даже стандарт требует)
while((bool)1) vs while((bool)2)

и следовательно, может быть до-проверка, чтобы он лежал в диапазоне (0,1) с танцами и выставлениями флагов. (ну или гсс опять начнет глумиться над переполнением)
<Подпись удалена модератором>
Re[7]: Что быстрее
От: kleng  
Дата: 27.07.14 16:02
Оценка:
Здравствуйте, Vain, Вы писали:

V>ну тут как в поговорке про дураков


про тех, которым нельзя давать ни малейшего кусочка власти?
Re[8]: Что быстрее
От: Vain Россия google.ru
Дата: 27.07.14 16:20
Оценка:
Здравствуйте, kleng, Вы писали:

V>>ну тут как в поговорке про дураков

K>про тех, которым нельзя давать ни малейшего кусочка власти?
ну раз вы такое спрашиваете, значит уже ходили на подобное собеседование?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: Что быстрее
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.07.14 14:00
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, abibok, Вы писали:


A>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?


I>Смотря что будет в троеточии


Кроме того, никогда не мешае переспросить, уточнить и тд. Возможно, как в реальности, имеет место попытка решения некотрой проблемы, сформулированой вот таким вот образом. Тогда можно попытаться переформулировать задачу и вместо 'что быстрее' будет 'как замерить загрузку процессора'
Re[2]: Что ещё есть?
От: CEMb  
Дата: 28.07.14 16:16
Оценка:
Здравствуйте, ononim, Вы писали:

O>Я лично всегда пишу пустой for. Интереса ради проверил все три варианта в VS2008 (я не некрофил, я любитель антиквариата ) , получил неожиданный результат в дизасме:

Ура, хоть кто-то догадался посмотреть в дизасме
  дизасм
O>
O>    for (;;)
O>    {
O>        printf("foo");
O>0040AD44  push        offset ___mnames+294h (40DDB8h) 
O>0040AD49  call        printf (4016FCh) 
O>0040AD4E  add         esp,4 
O>    }
O>0040AD51  jmp         wmain+4 (40AD44h) 

O>/////////////////////////////////////////////

O>    while (1)
O>0040AD44  mov         eax,1 
O>0040AD49  test        eax,eax 
O>0040AD4B  je          wmain+1Ch (40AD5Ch) 
O>    {
O>        printf("foo");
O>0040AD4D  push        offset ___mnames+294h (40DDB8h) 
O>0040AD52  call        printf (4016FCh) 
O>0040AD57  add         esp,4 
O>    }
O>0040AD5A  jmp         wmain+4 (40AD44h) 

O>/////////////////////////////////////////////

O>    while (2)
O>0040AD44  mov         eax,2 
O>0040AD49  test        eax,eax 
O>0040AD4B  je          wmain+1Ch (40AD5Ch) 
O>    {
O>        printf("foo");
O>0040AD4D  push        offset ___mnames+294h (40DDB8h) 
O>0040AD52  call        printf (4016FCh) 
O>0040AD57  add         esp,4 
O>    }
O>0040AD5A  jmp         wmain+4 (40AD44h) 
O>

O>И это релиз, с включенной оптимизацией на скорость

А напиши в асме быстрый _конечный цикл? У меня вроде в три строки получалось.

А вообще, в тему топика, мне больше нравятся такие нестандартные задачки на подумать, так что если у кого есть, накидайте сюда, пожалуйста
Re[9]: Что быстрее
От: kleng  
Дата: 28.07.14 16:20
Оценка:
Здравствуйте, Vain, Вы писали:

V>ну раз вы такое спрашиваете, значит уже ходили на подобное собеседование?


Типа того. Уже доводилось сталкиваться с людьми, которым ударило в голову.
Re[2]: Что быстрее
От: VladFein США  
Дата: 28.07.14 18:25
Оценка:
Здравствуйте, ononim, Вы писали:

A>>Что вы ответите на вопрос "что быстрее — while(1) {...} или while(2) {...}"?

O>Я лично всегда пишу пустой for. Интереса ради проверил все три варианта в VS2008 (я не некрофил, я любитель антиквариата ) , получил неожиданный результат в дизасме:
  Скрытый текст
O>
O>    for (;;)
O>    {
O>        printf("foo");
O>0040AD44  push        offset ___mnames+294h (40DDB8h) 
O>0040AD49  call        printf (4016FCh) 
O>0040AD4E  add         esp,4 
O>    }
O>0040AD51  jmp         wmain+4 (40AD44h) 

O>/////////////////////////////////////////////

O>    while (1)
O>0040AD44  mov         eax,1 
O>0040AD49  test        eax,eax 
O>0040AD4B  je          wmain+1Ch (40AD5Ch) 
O>    {
O>        printf("foo");
O>0040AD4D  push        offset ___mnames+294h (40DDB8h) 
O>0040AD52  call        printf (4016FCh) 
O>0040AD57  add         esp,4 
O>    }
O>0040AD5A  jmp         wmain+4 (40AD44h) 

O>/////////////////////////////////////////////

O>    while (2)
O>0040AD44  mov         eax,2 
O>0040AD49  test        eax,eax 
O>0040AD4B  je          wmain+1Ch (40AD5Ch) 
O>    {
O>        printf("foo");
O>0040AD4D  push        offset ___mnames+294h (40DDB8h) 
O>0040AD52  call        printf (4016FCh) 
O>0040AD57  add         esp,4 
O>    }
O>0040AD5A  jmp         wmain+4 (40AD44h) 
O>


O>И это релиз, с включенной оптимизацией на скорость

я не некрофил, и не любитель антиквариата...
VS2012 генерирует одинаковый (хороший) код для всех этих случаев с default optimization
Re[4]: Что ещё есть?
От: CEMb  
Дата: 29.07.14 04:22
Оценка:
Здравствуйте, eskimo82, Вы писали:

CEM>>А напиши в асме быстрый _конечный цикл? У меня вроде в три строки получалось.

E>А для какого процессора, под какую платформу ? И что писать в третью строку ?
E>
E>     mov ecx, 100500
E>boo: loop boo
E>


а (бес)полезную нагрузку в цикл?

    mov ecx, 100500
    boo: nop
    loop boo
Re[3]: Что быстрее
От: BulatZiganshin  
Дата: 29.07.14 15:47
Оценка:
Здравствуйте, Anatolix, Вы писали:

E>>Тогда как для двойки 0000010 нужно сделать сдвиг и потом сравнить ...

A>2) у меня есть какое-то сомнение, что для того, чтобы сделать cmp xx/j[n]z процессор что-то там сдвигает.

таймспеки на все микроархитектуры есть, время выполнения от значений может зависеть только на сложных операциях типа деления
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Что быстрее
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 31.07.14 17:08
Оценка:
Здравствуйте, kleng, Вы писали:

K>Разворачиваюсь и ухожу.


Как послушаешь местных — так вы со всех интервью "разворачиваетесь и уходите" Стесняюсь спросить — а вы вообще работаете, или только по интервью ходите?
[КУ] оккупировала армия.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.