- 1
- 2
width ? width-- : width;
height ? height-- : height;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
width ? width-- : width;
height ? height-- : height;
Ахуй нехуевый. Не говнокод, наверно, но всё же.
правда тернарный оператор скомпилится в cmov, а с ифом может возникнуть условный переход, и насчет скорости хз
но ИМХО наглядность важнее.
Хотя, опять же, если воспринимаем как число для наглядности лучше писать >0.
А если width уже было отрицательно, то в исходном варианте уйдем в глубокий минус.
Ещё хотелось бы отметить, что обычно результат тернарной операции чему-то присваивается. Если например : , то с учетом постдекремента развернётся в . Более весело получается, когда . Такой код можно вообще убрать. Если конечно декремент не имеет побочных эффектов.
>>>a = width;
>>>if( width ) width--;
немного неверно там вместо a - временная переменная
в общем современные компилеры достаточно умны чтоб не сейвить во временные переменные и могут вставить cmov если это целесообразно.
А вообще надо писать наглядно, и расчитывать на компилер в критичных по скорости местах - BIG MISTAKE - на своем опыте знаю - лучше написать на асме.
>>>А если width уже было отрицательно, то в исходном варианте уйдем в глубокий минус.
ИМХО в большинстве случаев объявить width как signed уже говнокод....
Не совсем понял, что неверно.
a=tmp=width;
if( tmp) width--;
короче tmp - ячейка отличная от width
вообще эти инкременты весьма мутная тема и все зависит от компилера особенно в С/С++
мы с инканусом уже обсуждали это здесь...
не помню номер но сам говнокод в котором мы это было выглядел как-то так
a=a++;
почитав тот тред можно увидеть, как от этих временных переменных сильно меняется результат.
к примеру MSVC - вообще их не использует и тулит все в одну ячейку.
Но при этом на момент вычисления условия if'а значения у них одинаковые. В однопоточном приложении.
struct Size
{
int width;
int height;
};
Size maxSize;
Контекст -- он нас всегда всех обламывает.
Тогда не нужно дополнительных проверок, типа:
Оффтоп: вообще, я такую эволюцию прослеживаю
C -> Objective-C -> C++ -> Workaround-C++.
А вас, дорогие друзя, это не бесит?
Я хотел сказать, что по задумке проекта приоритеты могут быть расставлены как как только захотят соотвествующие люди в данном проекте.
>насчет скорости хз
Годик назад проверял. На современных процах cmov медленее, чем условные переходы. cmov плохо спаривается.
А Я: if( width>0) --width; Быстрее, хотя экономия на спичках.
>>>А Я: if( width>0) --width; Быстрее, хотя экономия на спичках.
согласен
"насчет скорости хз"
На да. На старых компах. Но смысла ориентироваться на такие компы я не вижу. Им уже лет 10-15.
но и на новых Core 2,i7, AMD - есть ситуации, где cmov - быстрее.
все зависит от вероятностей усл. джампа
Видимо предсказание ветвлений у меня хорошо срабатывало по такому случаю.
А вот cmov и прочие варианты, например через арифметику выполнялись дольше, да и ипользование ассемблерных ставок вставляло палки в колёса оптимизатора.
даже на P4 - есть выигрыш
или при парсинге чисел - с равновероятным распределением битов
если кому пруфлинки - реквестируйте
тем более cmov - генерирует меньше кода
так что толк от нее в определенных ситуациях есть..
интересные дискассы знающих парней
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
короче последний линк - реализация арифм. кодинга на cmovax
Да... Жара какая-то сегодня по особенному сильная... О_о
Ну только теми людьми, у которых в языках объект, над которым выполняют действие стоит на первом месте, а действие на втором. Вы к таким не относитесь, как рускоговорящий.
Например, Вы же не говорите "Слоников посчитать", а говорите "Посчитать слоников".
а может это вложено в цикл или рекурсию и таким образом обнуляются width и height ? ))
if (some) some--;
And it's awesome))
Ни цикла, ни рекурсии -- просто -1, и все.
PS: И придумал это не я, что не может не радовать)
Тоже первая мысль была об этом. Обрамить всё в цикл и получить истинный ГК :)
int i=-1;
while (i+=(5==3=>7?3:5),i<a) { ... }
есстесн неуд не поймёт что там написано, и будет сдавать лабу как есть (без переделывания), ну а преп его заставит объяснить что к чему и написать в нормальной форме;
и неуд ищет кто ему сможет объяснить код, но таких не находится, и тогда ему приходится грызть учебник или заказывает нормальную лабу =Ъ
а вот вы сами растите себе конкурентов...
я разделяю понятия "Помощь" и "Работа":
- если кто-то просит дать ему совет или объяснить как это делается (в общих чертах) - это Помощь
- а если кто-то просит готовый код, который будет использован для личной выгоды, - то это уже Работа
Помощь - естессно бесплатно, и в любое время (если есть оное)
а Работа - должна оплачиваться (иначе смысл оного пропадает)
---------------------------
неуды, про которых говорилось выше, - просят выполнить работу, под видом помощи;
притом не за работу, не за помощь оные даже спасибо не скажут, не то чтобы пивом угостить -(
поэтому приходится идти на такие извращения..
(одной девушке такие неуды вылезли на шею и используют, притом с упрёками типа: "если ты мне не поможешь, меня из-за тебя лишат стипендии".
а та девчёнка помогает им: абсолютно бесплатно делает лабы и объясняет как защитить;
смотря на это - аж противно становится)
зы: да и с их складом ума, программистами им Никогда не быть, так что конкурентов тут не будет.
(хотя они, сцука, при абсолютном отсутствии знаний получают повышенную стипендию)
к тому же это только для самых хитрых;
- остальные же заказывали работу по-нормальному;
SRSLY, не проще ли не давать код?
большинство обычные флюродросы и любители поупрашивать препода
и нервы - целые *happy*
И вообще. Диплом имхо нужен чтобы хот куда-то взяли. Красный -- чтоб точно при желании взяли по специальности (ибо так просто вроде не получить). А по специальности в группе ХОТЬ ЧТО-ТО понимают... эмм... ну, скажем, 17,5% (с калькулятором посчитал)) ). А я ваще довольно туповат, а в менеджеры/управленцы и т.п. не пойду. Душа блядь не лежит. Так че мне теперь, семью никогда не кормить? Половина же выйдет и станет чуть менее, чем средними специалистами с чуть более чем нормальным уровнем жизни. Из-за гордыни лишать людей жизни по-моему не хорошо.
Даже для себя не буду разбираться, что из этого образно, а что про меня. Блять заткните меня я дохуя пизжу весь день жара ебаная достала
знаю кучу примеров...
А что тогда показатель после выхода из инста? Вообще все теряется тогда... Я знаю зато нескольких людей, которые после девятого класса не учились вообще, но знают больше чем знают 99,(9)% всех человеков с в.о и п.к. (полными карманами), и работают они в таких местах где я вряд ли вообще побываю когда-либо.
А универ закончить надо, в этом меня, к сожалению, не переубедишь.
Короче, дайте мне мотиватор плиз.
Во2 тому, чему учат в институте учиться не обязательно, к моему сожалению и даже скорби.
если вы на 1м курсе изучали и писали p2p, - у вас двольно классный универ, я бы в таком хотел бы учиться;
за 3 года, у нас самым интересным заданием было: Написать программу рисования лабиринта с функцией поиска выхода -- банальная рекурсивная функция перебора ходов;
---------------------------------------------
стимул: получить корочку в.о.
но это стимул просто закончить обучение в ВУЗе, и не уйти из него досрочно...
как говорил мой преп по вышке: "в вузе учить учиться! ну, по крайней мере, так должно быть..."
-- и правда, в вузе должны давать вектор обучения;
мне понравился стиль обучения одного препа:
"Вот задача (условие), срок: 2 дня"
далее идёт пара вводных слов про то для чего эта задача нужна и с какими проблемами можно столкнуться, но ни слова про способы решения этих проблем (максимум намёк какой-то)
и тут у тебя есть 3 пути:
- найти готовое решение (скучно)
- почитать литературу и написать решение за 1 час (сильно просто)
- попытаться самому чот придумать, опираясь на базовые знания языка (без какой-либо литературы)
ты тратишь пару часов на написание программы, в ходе тестирования натыкаешься на жука...
еще пару часов пытаешься его пофиксить: в итоге самостоятельно фиксишь этот баг
смотришь на код -- и тебе он кажется не красивым и ГК каким-то: тратишь еще пару часов на облагораживание...
и вот чудо: оно работает, и ты затратив 6 часов - решил задачу...
потом так, чисто для интереса открываешь книгу, и находишь там 3 функции из стандартной библиотеки, на написание и отладку которых у тебя ушло 6 часов...
и ты не понимаешь - смеяться или плакать... (вот оно! - этот путь по мне, ибо я сильно ленивый, чтобы открывать книжку)
----------------------------------------------
зы: а вообще, обучаться нужно самостоятельно,- нужно разобраться, как и почему оно работает, ибо по-другому чему-то научиться невозможно;
ззы: стимул -- так же нужно определить самостоятельно ;-)
Насколько это хорошее образование?
И все таки только корочка выходит важна? Как доказательство усидчивости/везения/денег/задротства/зубрежки/жополизства (у кого что).
чтобы он мог сказать: "наша команда состоит из первоклассных спецов, все они имеют в.о."
т.е. если ты талантлив и ты что-то умеешь делать хорошо -- тебя возьмут на работу.
но всёравно будут напрягать, чтобы получил В.О., - ибо: "у нас солидная контора, и нужно чтобы весь персонал (включая уборщицу) был с в.о."
Вата. Бесперспективненько.
на собеседовании оконченное высшее является бонусом, так как оно свидетельствует о том, что человек может заставить делать себя то, что не хочет, а как известно даже в довольно интересном геймдеве есть очень много скучных задач... люди без ВО могут просто забить на все, как они это сделали в получая это самое ВО...
Красный диплом бонусом не является...
знаю кучу примеров...
Хорош гнать, надо искать нормальную работу, с кондиционером.
У нас среди сотрудников такие настроения: «Блин, дома так гнусно, пойду на работу, там прохладно хоть»:)
Седня гендир в 14:00: "Жарко седня, мы пошли, а вы на 2-3 часа пораньше домой идите". Через полчаса коммерческий "Всем на пляж! Это приказ! Всем пока!"
Жара задрала
PS. В Барселоне 30, поеду, нафик, туда!:)
самое оно чтобы на пляж сдёрнуть ;P
гендир это социальный конструкт