|
|
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
Задача следующая, что быстрее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Понятно, что 2-й случай быстрее 1-го. А как обстоит дело с 1-м и 3-м? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 11:55 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
3 imho эквивалентно 2, реализованно через указатель а вот 1 требует вызова конструктора копирования, т.е. создается новый объект для простых типов 1 м.б. эффективней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:01 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
Голенков Владимир3 imho эквивалентно 2, реализованно через указатель а вот 1 требует вызова конструктора копирования, т.е. создается новый объект для простых типов 1 м.б. эффективней Тобишь, тоже помещение в стек указаетеля и опрация разыменования? Только скрыто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:22 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
Скорость скоростью, а еще и работает по разному. В 1-ом случае изменение данных внутри функции не видимо снаружи, т.к. изменяются данные копии. В 2 и 3 изменение данных внутри функции видимо, т.к. изменяются данные подлиника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:26 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
SnowMan2Скорость скоростью, а еще и работает по разному. В 1-ом случае изменение данных внутри функции не видимо снаружи, т.к. изменяются данные копии. В 2 и 3 изменение данных внутри функции видимо, т.к. изменяются данные подлиника. Да. Это-то понятно. Если функция небольшая, а скорость критична, имея полную уверенность, что данные источника не поменяются, можно иногда использовать элементы "плохого стиля". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:28 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
имея полную уверенность, что данные источника не поменяются Можно написать const? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 14:03 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
Понятно, что 2-й случай быстрее 1-го. А как обстоит дело с 1-м и 3-м? Есть ещё более быстрый способ: struct { ... void func() const { } } ps. на самом деле конечно та же фигня для _fastcall но для остальных теоритически быстрее да и ООП -валидней :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 14:56 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
читал в одной умной книжке что const должен стоять в каждой функции не меняющей передаваемый параметр. как гарантия того что он действительно н е изменится. и с тех пор ставлю везде :) зы константа константный указатель указатель на константу константный указатель на константу просто песня :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 15:22 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
Значит, в таком случае, самый удобный случай Код: plaintext 1. 2. аналогичный 3-му, но более корректный, коий является равный 2-му, и тоже более корректный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 15:51 |
|
||
|
Передача параметра по ссылке.
|
|||
|---|---|---|---|
|
#18+
я вот не догоняю по жизни. а зачем struct писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 16:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34196875&tid=2029834]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 462ms |

| 0 / 0 |
