Являются ли дни прохождения const std :: string & amp; как параметр над?
blockquote>Нет. Многие люди берут этот совет (включая Дейва Абрахама) за пределы области, к которой он применим, и упрощают его для применения к всем параметрам
std::string
- Всегда , проходящему черезstd::string
значение не является «лучшей практикой» для любых произвольных параметров и приложений, поскольку оптимизация этих обсуждений / статей сосредоточена на применении только к ограниченному набору случаев .Если вы 're возвращающее значение, изменяя параметр или принимая значение, тогда передача по значению может сэкономить дорогое копирование и предложить синтаксические удобства.
Как и прежде, передача константой const значительно экономит , когда вы не нужно копировать .
Теперь к конкретному примеру:
Однако inval все еще намного больше размера ссылки (которая обычно реализуется как указатель). Это связано с тем, что std :: string имеет различные компоненты, включая указатель на кучу и член char [] для оптимизации коротких строк. Поэтому мне кажется, что переход по ссылке - это хорошая идея. Может ли кто-нибудь объяснить, почему Herb мог бы это сказать?
blockquote>Если размер стека является проблемой (и если это не указано / оптимизировано),
return_val
+inval
>return_val
- - IOW, использование пикового стека может быть уменьшено , пройдя здесь по значению (обратите внимание: упрощение ABI). Между тем, передача по ссылке const может отключить оптимизацию. Основная причина здесь заключается не в том, чтобы избежать роста стека, а в том, чтобы обеспечить оптимизацию , где это применимо .Дни прохода по ссылке const не превышают - - правила были сложнее, чем когда-то. Если производительность важна, вам будет разумно рассмотреть, как вы передаете эти типы, на основе сведений, которые вы используете в своих реализациях.
Обратный порт означает, что вы берете ветку темы topic
, основанную на некотором коммите, то есть D
, и перебазируете ее на некоторый более старый коммит, а не на новый, т.е. A
.
Итак, команда будет выглядеть следующим образом:
git rebase A topic
Где A
- фактический хеш коммита.
Главное, что пытается сделать глава, это то, что git не волнует, куда вы перебазируете ветку темы.
Хотя «назад» относится к перебазированию в более старый коммит, оно также отражает практику « дооснащения », которое в программном обеспечении является актом бэкпортинга
Действие по извлечению деталей из более новой версии системы программного обеспечения или компонента программного обеспечения и переносу их в более старую версию того же самого программного обеспечения. Он является частью этапа обслуживания в процессе разработки программного обеспечения и обычно используется для устранения проблем безопасности в более старых версиях программного обеспечения, а также для предоставления новых функций более старым версиям.
blockquote>В Git этот «порт» может быть обратной перебазировкой, но чаще это вишня (потому что вы могли бы уже перебазировать свою ветвь вперед, имея необходимость реплицировать те же самые ветки). исправляет / фиксирует старую версию вашего программного обеспечения, в случае исправления ошибки)