![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Как из функции вернуть пустой std::map?
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Alca
а зачем? вообще нехорошо это, по ссылке лучше передавать
опоздал Это сообщение отредактировал(а) azesmcar - 7.5.2009, 13:43 |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
zim22, azesmcar, спасибо. Я так и делал, но колмпилер не хавал.
Оказалось, что лажа была другом месте - в макросе.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Alca
там в самом вопросе написано
Ну...надо так надо Это сообщение отредактировал(а) azesmcar - 7.5.2009, 13:48 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Там тесты есть. Я делал и так и так - результат сильно не отличается... Добавлено @ 13:53 azesmcar, попробуй сам потести. Это сообщение отредактировал(а) Alca - 7.5.2009, 14:03 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
ОК, проверю. Но тесты - это не гарантия. Гарантию дает С++ стандарт, где ясно сказано что при возвращении по значению - вызывается копирующий конструктор. Подсчетом ссылок мап не обладает, а значит данные будут скопированы. Что там натворит оптимизатор - сейчас посмотрю. Но писать код, который будет работать быстро/медленно в зависимости от оптимизатора по любому не стоит Это сообщение отредактировал(а) azesmcar - 7.5.2009, 14:03 |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Alca
Вот и результаты тестов подоспели Все тесты проводились в релиз версии, на Visual Studio 2008 тестируемый код
Разница 1250 милисекунд. Более секунды. Оптимизатор вероятно просто заинлайнил эту функцию, потому никакой разницы нет при включенном оптимизаторе.. но другой компилятор может так не поступить, причем это даже зависит от функции, будет она инлайн, или нет..может сейчас она и будет, но добавим завтра в нее пару вызовов и получим в результате спад производительности. |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Можно даже тоже самое проделать с мапом более внушительного размера - будет тоже самое.
Добавлено через 1 минуту и 41 секунду
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
увеличим размер мапа вдвое, будет разница вдвое больше, втрое - разница будет втрое больше..время выполнения зависит от размера мапа линейно, так как разница лишь в копировании данных, и чем их больше, тем дольше будет копироваться. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
если оптимизация отключена - влияет. см. тесты
Это сообщение отредактировал(а) azesmcar - 7.5.2009, 14:35 |
||||
|
|||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
А кто сказал что я собирался не инлайнить? |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
а кто сказал, что компилятор учитывает ваше выраженнное вербально нежелание инлайнить |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |