- 主题:用vector代替数组,但是NULL参数的作用如何实现?
你说得对,看起来用指针仍然没什么不好
【 在 here080 的大作中提到: 】
: 对于一般性的类T,optional<T>不适合作为参数类型,因为会导致一次T的拷贝。
: 【 在 milksea (肥了,又肥了 >>>_<<<) 的大作中提到: 】
: : 标 题: Re: 主题:用vector代替数组,但是NULL参数的作用如何实现?
: ...................
--
FROM 114.242.250.*
一般性的类的拷贝开销很大么?写C++成天都在考虑怎么节约几纳秒的开销?
【 在 here080 (hero080) 的大作中提到: 】
: 对于一般性的类T,optional<T>不适合作为参数类型,因为会导致一次T的拷贝。
--
FROM 118.112.200.*
前几天才被我们架构师说了一遍
就因为这个
他们特别在意这个开销
尽管我觉得我那个场景这个无关紧要
【 在 gloop ( ) 的大作中提到: 】
: 一般性的类的拷贝开销很大么?写C++成天都在考虑怎么节约几纳秒的开销?
--
FROM 117.35.111.*
用 const 引用这种顺手就能写的方式来节约开销没问题。但是为了节约个不知道到底有几纳秒的开销,把代码写得可读性降低了,或者安全性降低了,例如满篇的裸指针,那就得不偿失了。
【 在 litguy (随风而行) 的大作中提到: 】
: 前几天才被我们架构师说了一遍
: 就因为这个
: 他们特别在意这个开销
: ...................
--
FROM 118.112.200.*
很大,因为拷贝很多时候意味着在堆上新分配空间。
以std::string为例。你拷贝一个不仅仅只是拷贝字节,而是要新开一块内存空间。
这个是上千倍耗时的。
对于一个简单的代码规范就能得到的效率,肯定是不要白不要的。
【 在 gloop 的大作中提到: 】
: 一般性的类的拷贝开销很大么?写C++成天都在考虑怎么节约几纳秒的开销?
:
--
FROM 107.3.156.*
const T* 和const T&可读性差很大?
或者说const T* 和const std::optional<T>&可读性差很大?
前者似乎更可读一点。
裸指针本身不是问题。
带所有权的裸指针才是问题。
【 在 gloop 的大作中提到: 】
: 用 const 引用这种顺手就能写的方式来节约开销没问题。但是为了节约个不知道到底有几纳秒的开销,把代码写得可读性降低了,或者安全性降低了,例如满篇的裸指针,那就得不偿失了。
--
FROM 107.3.156.*
你就说要几纳秒吧
【 在 here080 (hero080) 的大作中提到: 】
: 很大,因为拷贝很多时候意味着在堆上新分配空间。
: 以std::string为例。你拷贝一个不仅仅只是拷贝字节,而是要新开一块内存空间。
: 这个是上千倍耗时的。
: ...................
--
FROM 118.112.200.*
当成参数传来传去的裸指针有不涉及所有权的么?或者这样说吧,裸指针传来传去时刻要想着有没有所有权的问题的代码出bug的概率大,还是简单的值类型出bug的概率大?
【 在 here080 (hero080) 的大作中提到: 】
: const T* 和const T&可读性差很大?
: 或者说const T* 和const std::optional<T>&可读性差很大?
: 前者似乎更可读一点。
: ...................
--
修改:gloop FROM 118.112.200.*
FROM 118.112.200.*
编译器有 small string optimization,小字符串可以在栈上分配内存,以及有 copy elision,拷贝开销也不一定存在。反而是返回指针,可能不得不在堆上分配内存。你所想象的效率提升可能根本不存在,反而是效率下降。没做 profile 就没有发言权。过早的优化是万恶之源。
【 在 here080 (hero080) 的大作中提到: 】
: 很大,因为拷贝很多时候意味着在堆上新分配空间。
: 以std::string为例。你拷贝一个不仅仅只是拷贝字节,而是要新开一块内存空间。
: 这个是上千倍耗时的。
: ...................
--
FROM 118.112.200.*
指针和引用是一样的东西。
只要代码规范确定了所有权用智能指针管理就行。
如果没有这条代码规范,值类型一样可以出问题。它的成员有可能是裸指针,然后你复制了乱搞。
另外,你是不是没写过用指针作为输出参数的代码?
【 在 gloop 的大作中提到: 】
: 当成参数传来传去的裸指针有不涉及所有权的么?或者这样说吧,裸指针传来传去时刻要想着有没有所有权的问题的代码出bug的概率大,还是简单的值类型出bug的概率大?
--
FROM 107.3.156.*