![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
...
Это сообщение отредактировал(а) mes - 28.8.2008, 16:46 |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Вот о скорости... Пример последний - это вызов функции isVisible. Будет ли эффективно, если мне нужно обработать 1 млн объектов, в цикле вызывать эту функцию? Может конечно сделать inline, но вот интересно к какому виду это приведет интерпретатор (как кто-то тут говорил "С++ код все равно приводится к Си")...
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
да, будет, так как все это дело соптимизируется хотя тут особо оптимизироваться нечему... возврат значения... Добавлено через 2 минуты кстати, почему бы тебе самому не попробовать сравнить? Это сообщение отредактировал(а) Alek86 - 28.8.2008, 16:55 |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Сравнивал... Обычный цикл работает на 10% медленнее с этим isVisible что с inline что без. А вот взятие значения из памяти быстрее...
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
И как ты сравнивал?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Вот код... Если get(i) заменить на a[i], то работает за 3 секунды. А в приведенном варианте 63 секунды. Это если голый пример (у меня разница на 10%, а тут раз в 20). |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Если выставить сборку Release в студии и установить Optimization: Maximize Speed (/O2), то оба варианта имеют одинаковое время исполнения.
Посмотрел ассемблерный листинг. В обоих случаях выходит один и тот же машинный код. Это сообщение отредактировал(а) W4FhLF - 28.8.2008, 17:42 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
с включенной оптимизацией результат в обоих случаях 2578 тиков 5719 с прямым доступом и 9063 через get() итог > разрешите компилятору соптимизировать вместо того чтоб мучиться самому |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Ну не все же пишут в виндовсе...
|
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Anton Vatchenko, ну твой то код определённо под винду
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
За что люблю Сишников, вооружатся стандартом и умными книжками и с рвением святой инквизиции доказывают всем мнение чужого дядьки
public перменные маст хэв, не надо от них чуратся как от прокаженных. Если надо, значит юзай. Кстати очень интересная позиция замены паблик переменных сетами и гетами, если есть сеты и геты для переменной то это уже нарушение инкапсуляции, так что тут не важно как это выглядит, через методы, либо напрямую. Все одно. Правда напрямую меньше букофф, так что выбирать надо то, что удобно, а не то, что дядьки чужие насоветовали |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
конечно да, если только программист отдает себе отчет, зачем он этои делает.. если он не понимает разницы между публичной и приватной переменной, то лучше пусть делает приватной .. Так хоть через некоторое время накопится опыт и придет осознание. То же касается и Гетеров. Начинать инкапсуляцию можно начинать с них, остальное с опытом.. главное стремится. Кажется если спрятать реализацию, это усложняняет разработку программы. Да действительно для локальной области все это добавляет затруднений. Однако если смотреть на прогу со стороны- то программа разработаная с учетом приватной реализации собрана из кубиков - где каждый отдельный кубик можно протестировать, и расширить ему функциональность. Программа же с открытой реализацией похожа на кашу, где все переплетено и выделить оттуда определенную сушность очень трудно даже для понимания, не говоря о поддержки и расширеннии функциональности.. Но чтоб преуспеть в искустве надо слушать, что эти чужие дядьки советуют, анализировать, пробавать, понимать и в конце концов принимать решение уже своей головой в каждом конкретном случае |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Хм... Где здесь нарушение? Разве взаимодействие с интерфейсом считается нарушением инкапсуляции? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
ты открыл доступ к внутреннему состоянию, интерфейс\напрямую не важно, важно то, что пользователь получает доступ. А это нарушение. |
|||
|
||||
| Ches |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 19.8.2008 Репутация: нет Всего: 3 |
то пусть почитает еще книжек, потому как инкапсуляция - часть фундамнтальной основы ООП.
Нужно понимать, что приватная переменная + методы доступа к ней = паблик переменная, за исключением случая, когда в set() например нужно организовать проверку значения ну или какие-либо дополнительные манипуляции |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |