- 1
- 2
width ? width-- : width;
height ? height-- : height;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
width ? width-- : width;
height ? height-- : height;
Ахуй нехуевый. Не говнокод, наверно, но всё же.
absolut 23.07.2010 09:37 # +2
3.14159265 23.07.2010 09:52 # +4
правда тернарный оператор скомпилится в cmov, а с ифом может возникнуть условный переход, и насчет скорости хз
но ИМХО наглядность важнее.
absolut 23.07.2010 10:19 # 0
Хотя, опять же, если воспринимаем как число для наглядности лучше писать >0.
А если width уже было отрицательно, то в исходном варианте уйдем в глубокий минус.
Ещё хотелось бы отметить, что обычно результат тернарной операции чему-то присваивается. Если например : , то с учетом постдекремента развернётся в . Более весело получается, когда . Такой код можно вообще убрать. Если конечно декремент не имеет побочных эффектов.
3.14159265 23.07.2010 10:43 # 0
>>>a = width;
>>>if( width ) width--;
немного неверно там вместо a - временная переменная
в общем современные компилеры достаточно умны чтоб не сейвить во временные переменные и могут вставить cmov если это целесообразно.
А вообще надо писать наглядно, и расчитывать на компилер в критичных по скорости местах - BIG MISTAKE - на своем опыте знаю - лучше написать на асме.
>>>А если width уже было отрицательно, то в исходном варианте уйдем в глубокий минус.
ИМХО в большинстве случаев объявить width как signed уже говнокод....
absolut 23.07.2010 10:49 # 0
Не совсем понял, что неверно.
3.14159265 23.07.2010 11:19 # 0
a=tmp=width;
if( tmp) width--;
короче tmp - ячейка отличная от width
вообще эти инкременты весьма мутная тема и все зависит от компилера особенно в С/С++
мы с инканусом уже обсуждали это здесь...
не помню номер но сам говнокод в котором мы это было выглядел как-то так
a=a++;
почитав тот тред можно увидеть, как от этих временных переменных сильно меняется результат.
к примеру MSVC - вообще их не использует и тулит все в одну ячейку.
Altravert 23.07.2010 11:25 # +1
absolut 23.07.2010 11:50 # 0
Но при этом на момент вычисления условия if'а значения у них одинаковые. В однопоточном приложении.
Altravert 23.07.2010 11:03 # 0
absolut 23.07.2010 11:46 # 0
Altravert 23.07.2010 12:14 # 0
struct Size
{
int width;
int height;
};
Size maxSize;
Контекст -- он нас всегда всех обламывает.
absolut 23.07.2010 12:48 # 0
Тогда не нужно дополнительных проверок, типа:
Altravert 23.07.2010 16:05 # 0
Altravert 23.07.2010 10:54 # 0
Оффтоп: вообще, я такую эволюцию прослеживаю
C -> Objective-C -> C++ -> Workaround-C++.
А вас, дорогие друзя, это не бесит?
xaionaro 23.07.2010 10:28 # 0
Altravert 23.07.2010 10:56 # 0
xaionaro 23.07.2010 11:02 # 0
Я хотел сказать, что по задумке проекта приоритеты могут быть расставлены как как только захотят соотвествующие люди в данном проекте.
Говногость 23.07.2010 13:03 # +2
>насчет скорости хз
Годик назад проверял. На современных процах cmov медленее, чем условные переходы. cmov плохо спаривается.
Говногость 23.07.2010 13:04 # +1
А Я: if( width>0) --width; Быстрее, хотя экономия на спичках.
3.14159265 23.07.2010 13:30 # +1
>>>А Я: if( width>0) --width; Быстрее, хотя экономия на спичках.
согласен
3.14159265 23.07.2010 13:35 # 0
"насчет скорости хз"
Говногость 23.07.2010 13:51 # 0
На да. На старых компах. Но смысла ориентироваться на такие компы я не вижу. Им уже лет 10-15.
3.14159265 23.07.2010 14:04 # 0
но и на новых Core 2,i7, AMD - есть ситуации, где cmov - быстрее.
все зависит от вероятностей усл. джампа
Говногость 23.07.2010 19:08 # 0
Видимо предсказание ветвлений у меня хорошо срабатывало по такому случаю.
А вот cmov и прочие варианты, например через арифметику выполнялись дольше, да и ипользование ассемблерных ставок вставляло палки в колёса оптимизатора.
3.14159265 23.07.2010 20:17 # 0
даже на P4 - есть выигрыш
или при парсинге чисел - с равновероятным распределением битов
если кому пруфлинки - реквестируйте
тем более cmov - генерирует меньше кода
так что толк от нее в определенных ситуациях есть..
Говногость 24.07.2010 00:08 # 0
3.14159265 26.07.2010 09:47 # 0
интересные дискассы знающих парней
https://mail.mozilla.org/pipermail/tamarin-devel/2008-April/000455.html
http://ondioline.org/mail/cmov-a-bad-idea-on-out-of-order-cpus
пруф спид-апа в реальном проекте
http://git.videolan.org/?p=x264.git;a=commitdiff;h=bf9bf7acf61da 13d9cc45c35291f61e614d7414c
3.14159265 26.07.2010 09:50 # 0
короче последний линк - реализация арифм. кодинга на cmovax
Altravert 23.07.2010 16:07 # −1
Говногость 23.07.2010 19:06 # 0
Да... Жара какая-то сегодня по особенному сильная... О_о
Говногость 23.07.2010 19:18 # 0
Ну только теми людьми, у которых в языках объект, над которым выполняют действие стоит на первом месте, а действие на втором. Вы к таким не относитесь, как рускоговорящий.
Например, Вы же не говорите "Слоников посчитать", а говорите "Посчитать слоников".
Altravert 23.07.2010 19:25 # +2
3.14159265 23.07.2010 09:37 # +3
а может это вложено в цикл или рекурсию и таким образом обнуляются width и height ? ))
Altravert 23.07.2010 09:44 # +1
if (some) some--;
And it's awesome))
Ни цикла, ни рекурсии -- просто -1, и все.
PS: И придумал это не я, что не может не радовать)
absolut 23.07.2010 10:20 # +1
Тоже первая мысль была об этом. Обрамить всё в цикл и получить истинный ГК :)
Kornew 23.07.2010 13:10 # 0
int i=-1;
while (i+=(5==3=>7?3:5),i<a) { ... }
есстесн неуд не поймёт что там написано, и будет сдавать лабу как есть (без переделывания), ну а преп его заставит объяснить что к чему и написать в нормальной форме;
и неуд ищет кто ему сможет объяснить код, но таких не находится, и тогда ему приходится грызть учебник или заказывает нормальную лабу =Ъ
pushkoff 23.07.2010 14:02 # +3
а вот вы сами растите себе конкурентов...
Kornew 23.07.2010 15:03 # −1
я разделяю понятия "Помощь" и "Работа":
- если кто-то просит дать ему совет или объяснить как это делается (в общих чертах) - это Помощь
- а если кто-то просит готовый код, который будет использован для личной выгоды, - то это уже Работа
Помощь - естессно бесплатно, и в любое время (если есть оное)
а Работа - должна оплачиваться (иначе смысл оного пропадает)
---------------------------
неуды, про которых говорилось выше, - просят выполнить работу, под видом помощи;
притом не за работу, не за помощь оные даже спасибо не скажут, не то чтобы пивом угостить -(
поэтому приходится идти на такие извращения..
(одной девушке такие неуды вылезли на шею и используют, притом с упрёками типа: "если ты мне не поможешь, меня из-за тебя лишат стипендии".
а та девчёнка помогает им: абсолютно бесплатно делает лабы и объясняет как защитить;
смотря на это - аж противно становится)
зы: да и с их складом ума, программистами им Никогда не быть, так что конкурентов тут не будет.
(хотя они, сцука, при абсолютном отсутствии знаний получают повышенную стипендию)
pushkoff 23.07.2010 16:51 # +4
Kornew 23.07.2010 17:48 # 0
к тому же это только для самых хитрых;
- остальные же заказывали работу по-нормальному;
pushkoff 23.07.2010 17:49 # +2
bugmenot 23.08.2010 19:03 # 0
SRSLY, не проще ли не давать код?
3.14159265 23.07.2010 17:49 # 0
большинство обычные флюродросы и любители поупрашивать препода
Altravert 23.07.2010 18:38 # +2
3.14159265 23.07.2010 20:15 # 0
и нервы - целые *happy*
Altravert 23.07.2010 16:18 # 0
И вообще. Диплом имхо нужен чтобы хот куда-то взяли. Красный -- чтоб точно при желании взяли по специальности (ибо так просто вроде не получить). А по специальности в группе ХОТЬ ЧТО-ТО понимают... эмм... ну, скажем, 17,5% (с калькулятором посчитал)) ). А я ваще довольно туповат, а в менеджеры/управленцы и т.п. не пойду. Душа блядь не лежит. Так че мне теперь, семью никогда не кормить? Половина же выйдет и станет чуть менее, чем средними специалистами с чуть более чем нормальным уровнем жизни. Из-за гордыни лишать людей жизни по-моему не хорошо.
Даже для себя не буду разбираться, что из этого образно, а что про меня. Блять заткните меня я дохуя пизжу весь день жара ебаная достала
pushkoff 23.07.2010 16:54 # 0
знаю кучу примеров...
Altravert 23.07.2010 18:45 # 0
А что тогда показатель после выхода из инста? Вообще все теряется тогда... Я знаю зато нескольких людей, которые после девятого класса не учились вообще, но знают больше чем знают 99,(9)% всех человеков с в.о и п.к. (полными карманами), и работают они в таких местах где я вряд ли вообще побываю когда-либо.
А универ закончить надо, в этом меня, к сожалению, не переубедишь.
Короче, дайте мне мотиватор плиз.
pushkoff 23.07.2010 19:03 # 0
Altravert 23.07.2010 19:28 # 0
pushkoff 23.07.2010 20:59 # 0
Altravert 23.07.2010 21:58 # 0
Во2 тому, чему учат в институте учиться не обязательно, к моему сожалению и даже скорби.
Kornew 24.07.2010 00:20 # +1
если вы на 1м курсе изучали и писали p2p, - у вас двольно классный универ, я бы в таком хотел бы учиться;
за 3 года, у нас самым интересным заданием было: Написать программу рисования лабиринта с функцией поиска выхода -- банальная рекурсивная функция перебора ходов;
---------------------------------------------
стимул: получить корочку в.о.
но это стимул просто закончить обучение в ВУЗе, и не уйти из него досрочно...
как говорил мой преп по вышке: "в вузе учить учиться! ну, по крайней мере, так должно быть..."
-- и правда, в вузе должны давать вектор обучения;
мне понравился стиль обучения одного препа:
"Вот задача (условие), срок: 2 дня"
далее идёт пара вводных слов про то для чего эта задача нужна и с какими проблемами можно столкнуться, но ни слова про способы решения этих проблем (максимум намёк какой-то)
и тут у тебя есть 3 пути:
- найти готовое решение (скучно)
- почитать литературу и написать решение за 1 час (сильно просто)
- попытаться самому чот придумать, опираясь на базовые знания языка (без какой-либо литературы)
ты тратишь пару часов на написание программы, в ходе тестирования натыкаешься на жука...
еще пару часов пытаешься его пофиксить: в итоге самостоятельно фиксишь этот баг
смотришь на код -- и тебе он кажется не красивым и ГК каким-то: тратишь еще пару часов на облагораживание...
и вот чудо: оно работает, и ты затратив 6 часов - решил задачу...
потом так, чисто для интереса открываешь книгу, и находишь там 3 функции из стандартной библиотеки, на написание и отладку которых у тебя ушло 6 часов...
и ты не понимаешь - смеяться или плакать... (вот оно! - этот путь по мне, ибо я сильно ленивый, чтобы открывать книжку)
----------------------------------------------
зы: а вообще, обучаться нужно самостоятельно,- нужно разобраться, как и почему оно работает, ибо по-другому чему-то научиться невозможно;
ззы: стимул -- так же нужно определить самостоятельно ;-)
Altravert 24.07.2010 06:50 # 0
Насколько это хорошее образование?
И все таки только корочка выходит важна? Как доказательство усидчивости/везения/денег/задротства/зубрежки/жополизства (у кого что).
Kornew 24.07.2010 10:12 # +1
чтобы он мог сказать: "наша команда состоит из первоклассных спецов, все они имеют в.о."
т.е. если ты талантлив и ты что-то умеешь делать хорошо -- тебя возьмут на работу.
но всёравно будут напрягать, чтобы получил В.О., - ибо: "у нас солидная контора, и нужно чтобы весь персонал (включая уборщицу) был с в.о."
Altravert 24.07.2010 11:14 # 0
Вата. Бесперспективненько.
pushkoff 24.07.2010 17:21 # 0
на собеседовании оконченное высшее является бонусом, так как оно свидетельствует о том, что человек может заставить делать себя то, что не хочет, а как известно даже в довольно интересном геймдеве есть очень много скучных задач... люди без ВО могут просто забить на все, как они это сделали в получая это самое ВО...
Красный диплом бонусом не является...
знаю кучу примеров...
nil 23.07.2010 22:33 # +1
Хорош гнать, надо искать нормальную работу, с кондиционером.
У нас среди сотрудников такие настроения: «Блин, дома так гнусно, пойду на работу, там прохладно хоть»:)
Altravert 23.07.2010 23:35 # 0
Седня гендир в 14:00: "Жарко седня, мы пошли, а вы на 2-3 часа пораньше домой идите". Через полчаса коммерческий "Всем на пляж! Это приказ! Всем пока!"
Жара задрала
nil 24.07.2010 00:19 # 0
PS. В Барселоне 30, поеду, нафик, туда!:)
Мистер Хэнки 27.07.2010 16:43 # 0
самое оно чтобы на пляж сдёрнуть ;P
Hoejijtsev 04.09.2022 21:28 # 0
guest6 04.09.2022 22:05 # 0
guest6 04.09.2022 22:06 # 0
Hoejijtsev 04.09.2022 22:12 # 0
KPblCA 04.09.2022 22:28 # 0
guest6 04.09.2022 21:30 # 0
guest6 04.09.2022 21:30 # 0
гендир это социальный конструкт