![]() |
|
Модераторы: Daevaorn |
![]()
|
|
||
|
|
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а не лень дотошно делать то, что может сделать беззатратней и надежнее компилятор ?
привет из будущего Вам в 90е годы )
а ваш шаблон это не преждевременность ?!!! Добавлено через 2 минуты и 5 секунд переписал бы, не оставив не единной строчки |
||||
|
|||||
| serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
>привет из будущего Вам в 90е годы )
т.е. сегодня принято оверхедить? Надо же. >а ваш шаблон это не преждевременность ?!!! ну... пока вроде нет. Я чего-то не смог бы дописать в макрос? > переписал бы, не оставив не единной строчки да это понятно, чисто по-русски. Но ответа по теме не было. Это сообщение отредактировал(а) serghd - 21.4.2012, 01:36 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
неа не принято ) акцент не на оверхеде, а на аргументации оверхеда при таком взгляде на программирование, спорить просто не о чем.. Вы считаете , что высоуровневость Вам не нужна и вы справитесь лучше.. В таком стиле Вам подойдет чистый Си, так как преимущества С++ Вы не желаете воспринимать Добавлено через 46 секунд почему вы выбрали макрос, а не функцию ? Добавлено через 2 минуты и 32 секунды В той плоскости в которой Вы задаете вопрос, ответов и аргументаций нет.. Пока вы предпочитаете нести груз на себе, пользу от осла-помощника Вы не почуствуете |
|||
|
||||
| serghd |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
что в неё передавать для вызова у всех объектов нужного метода? Добавлено через 1 минуту и 50 секунд
ну не знаю, что плоского... я привёл пример, всё вроде бы конкретно. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот пример выбора действия на основе перегрузки : http://liveworkspace.org/code/b41461abbf69...4810be27e645aa9 |
|||
|
||||
| serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
аа, ну панислась))... зы. подобных решений на самом деле достаточно, поэтому я и оговаривал не юзать дополнительные типы. То есть принцип сводится (правда, не всегда) к одному: бойся макросов и всеми путями их избегай. Потому что так надо: ты потом запутаешься при его разворачивании, т.к. всё в одной строке, он что-нибудь перекроет и т.п. и т.д... Это сообщение отредактировал(а) serghd - 21.4.2012, 02:04 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот еще пример, по вызову метода для массива объектов :
http://liveworkspace.org/code/d38498898d65...625f478c20981cd Добавлено через 2 минуты и 37 секунд
нет, нет и еще раз нет! не надо никого бояться.. просто есть более удобные и выразительные средсттва и там где можно желательно использовать именно их, а не макросы.. Добавлено через 3 минуты и 43 секунды
нет, не потому что с помощью макросов плохо, а потому что без них лучше Добавлено через 4 минуты и 47 секунд если без макросов лучше не получается, то пользуйтесь, соблюдая особенности их использования |
||||
|
|||||
| serghd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
про указатель на метод я думал (ибо он сулит наименьший оверхед), но показалось не таким простым для понимания как макрос что-ли...хз.
За усилия по коду спасибо, это время. Это сообщение отредактировал(а) serghd - 21.4.2012, 03:50 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот опять преждевременная оптимизация тогда еще один примерчик : http://liveworkspace.org/code/3725a92b935e...619e5ef1c1678c4 Добавлено через 4 минуты и 43 секунды P.S: насчет оверхеда : сравните релизный асм-выход последнего примера, и примера с макросом.. будете сильно удивлены Это сообщение отредактировал(а) mes - 21.4.2012, 02:43 |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
я навидался ошибок от применения макросов, но как насчет использования макросов на короткие расстояния, типа делаем #define -> используем макрос -> делаем #undef?
|
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Интересно кому и когда это ввели? Мелкомягким, это походу никто не вводил. У них полно макросов с маленькими буквами, хоть теже мин/макс Да и других полно.
asmdzen, Ваш вопрос напоминает что-то типа: Я навидался доказательств что курить вредно, а как насчет того, чтобы курить изредка и не в затяжку? А если серьезно, то если вы считаете что так вам и другим проще будет понять код, делайте на здоровье. я вообще не люблю жесткие запреты... Но с макросами действительно проблем больше, чем пользы. Просто есть другие очень хорошие способы. |
||||
|
|||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
кстати, вот тот редкий случай, когда бы я предпочел макрос.
этот код:
заменил бы на этот:
1. использовать мьютекс для блокировки арифметических операций - это мегаоверхед! 2. использовать функцию вместо макроса ATOMIC_ADD, мне кажется будет большим оверхедом из-за того, что функция будет содержать цикл, а заинлайнивание таких функций проблематично. и, как следствие, для одной атомарной операции будет происходить сохранение стека+создание_нового+разрушение_нового+восстановление_старого. хотя нужно смотреть ассемблерный код. в данном случае да - макрос незаменим. Это сообщение отредактировал(а) boostcoder - 21.4.2012, 13:59 |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
boostcoder, я бы заинлайнил, и пусть компилятор разруливает. Более чем уверен, что все будет оптимально. Я пару раз проверял в студии. Код макроса и инлайн функции, не отличались. Это сообщение отредактировал(а) volatile - 21.4.2012, 14:37 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
он-то разрулит. но под вопросом остается эффективность. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
имхо, Вы перепутали "вызов функции с циклом" и "вызов функции в цикле".. Это сообщение отредактировал(а) mes - 21.4.2012, 15:37 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |