|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||||||||||||||
Возврат ссылки из метода27.09.2017, 15:42. Показов 3528. Ответов 15
Метки нет (Все метки)
Доброго времени суток!
Дано: структура:
0
|
||||||||||||||||
| 27.09.2017, 15:42 | |
|
Ответы с готовыми решениями:
15
Возврат двух значений из метода Возврат ссылки Возврат r-ссылки |
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
||||||
| 27.09.2017, 15:51 | ||||||
1
|
||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||
| 27.09.2017, 16:15 [ТС] | ||
Если я pos из private переношу в public и напрямую обращаюсь в цикле к переменной, не через метод, то производительность заметно возрастает. Ваш вариант еще не пробовал.А можно поподробнее, для чего const прописывать два раза? и возвращать двойную ссылку? Добавлено через 5 минут Ну кстати да, воспользовался вашим первым вариантом, скорость не увеличилась, остается пока выносить свойство в public и обращаться к нему напрямую.
0
|
||
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
|
| 27.09.2017, 16:22 | |
|
ну вы исключили вызов метода для доступа к точке, логично что от этого будет прирост. сделайте возвращающий метод inline функцией, после оптимизации должен быть такой же эффект, как если бы вы без метода объект получали. но в целом допустим от этих действий вы разогнали конкретно этот кусочек в 10 раз (на 1000%), что очень круто. но время, которое затрачивается на выполнение операции, внутри которой этот вызов, может уменьшиться лишь на сотые доли процента. т.е. в целом эффекта оптимизации не будет заметно для тех, кому нужны результаты операции. поэтому, сперва надо убедится в том, что такая оптимизация дает существенные выгоды.
по поводу константности и & в конце. в целом ваш метод константный. желательно его так и указывать. & и && в конце - это перегрузки для l-value и r-value объектов. если вы получите ссылку на мембер какого-то r-value объекта, который тут же после вызова уничтожается, делая возвращенную ссылку - ссылкой на разрушенный объект, то при обращении к такой вот ссылке на мертвый объект можете поиметь много приколов.
0
|
|
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 27.09.2017, 17:06 [ТС] | |
|
0
|
|
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
||||||
| 27.09.2017, 17:45 | ||||||
0
|
||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||||
| 27.09.2017, 19:06 [ТС] | ||||||
|
Нее, инлайн тоже не помог, фпс проседает
написал так:
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|
| 27.09.2017, 21:16 | |
|
может оптимизацию включить забыли после отладки?
0
|
|
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 28.09.2017, 12:31 [ТС] | |
|
0
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 28.09.2017, 12:53 | ||||||
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
||
| 28.09.2017, 14:21 | ||
|
1
|
||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 28.09.2017, 15:12 [ТС] | |
|
COKPOWEHEU, Я новичек в с++, и поэтому написал в соответствующую тему
Я пока сильно не задумывался об тонкостях компиляции. Использую VS2015. Мне ещё очень многому нужно научиться, так что не серчайте за глупые (на ваш взгляд) вопросы На досуге почитаю об этом, спасибо за подсказку.MrGluck, Я практически так и сделал, но скорость заметно падала при обращении к методу, нежели напрямую к свойству в public. Думал что это связано со временем копирования значения, поэтому и решил посылать ссылку, но это так же не помогло, оказалось что сам вызов метода занимает время. Добавлено через 8 минут По сути, я получил ответ на свой вопрос ещё в первом ответе. Спасибо всем за помощь
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|
| 28.09.2017, 15:33 | |
|
На самом деле при включенной оптимизации не будет разницы, прямое обращение или через get/set - компилятор сам подставит прямое обращение к приватному полю, только предварительно проверит, разрешено ли это.
P.S. как в VS2015 включается оптимизация не знаю, но метод научного тыка и лазанья по менюшкам никто не отменял.
1
|
|
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 28.09.2017, 15:38 | |
|
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|
| 28.09.2017, 16:08 | |
|
То-то и оно что "обычно", а как будет у ТСа - неизвестно. Ну и надо было акцентировать внимание что методы set/get не замедляют работу и ими можно пользоваться.
0
|
|
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 28.09.2017, 18:05 [ТС] | |
|
Где оптимизация включается я нашел методом тыка. По умолчанию, она выключена. Прирост конечно есть, но больше всего прирост был от опции: "Основные проверки времени выполнения", стояло "Оба (/RTC1, эквивалентно /RTCsu) (/RTC1)", а я поставил "По умолчанию", т.к. после включения оптимизации, компилятор ругался, что с этим параметром одновременно нельзя включать, вот после этого скорость выполнения возросла ощутимо. Я ещё не читал про эти параметры, пока только экспериментировал
![]() Действительно, после включения оптимизации, разница между get и прямым обращением пропала Спасибо за совет!
0
|
|
| 28.09.2017, 18:05 | |
|
Помогаю со студенческими работами здесь
16
Возврат ссылки
Возврат значения метода через указатель Возврат ссылки на функцию. Возврат ссылки из функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|