c – 按值或引用传递标量类型:这有关系吗?
发布时间:2020-12-16 10:25:35 所属栏目:百科 来源:网络整理
导读:当然,micro-optimization is stupid可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情: void function( const double x ) {} 代替: void function( double x ) {} 因为它被认为“更有效率”.假设这个功能经常在一个程序中被荒谬地称为数
当然,micro-optimization is stupid可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情:
void function( const double& x ) {} 代替: void function( double x ) {} 因为它被认为“更有效率”.假设这个功能经常在一个程序中被荒谬地称为数百万次;这种“优化”是否重要? 解决方法
长话短说不,特别是在大多数现代平台上,标量甚至浮点类型都通过寄存器传递.我见过的一般经验法则是128字节作为你应该通过值和通过引用传递之间的分界线.
鉴于数据已经存储在寄存器中,您实际上需要处理器转出缓存/内存来获取数据,从而减慢了速度.这可能是一个巨大的打击,取决于数据所在的缓存行是否无效. 在一天结束时,它实际上取决于平台ABI和调用约定.大多数现代编译器甚至会使用寄存器来传递数据结构,如果它们适合(例如,两个短路的结构等),则在调优时. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |