2015-02-24 58 views
-1

当按值传递 - void func(Object o);调用 - func(a);通过值传递的结构与通过引用传递的结构相比,减慢了计算机的工作时间?对或错?

当通过引用 - void func(Object & o); 调用 - func(a);

+0

“慢下来”有点多...这个结构有多大? – Thilo 2015-02-24 04:13:07

+0

可能任何编程手册的第一个问题都试图教导指针。 – 2015-02-24 04:13:27

+0

相关:http://stackoverflow.com/questions/3314010/should-small-simple-structs-be-passed-by-const-reference?rq=1 – Thilo 2015-02-24 04:15:10

回答

0

更慢还是更快?

也许是错误的问题。


你参考的例子是const限定符是记录了一个地方,有经验的程序员可能会使用

void foo (const T& t); 

(尽管“过早优化”它可能暗示。)

引用仅输入到函数foo()。

所以我想我应该问你澄清,如果“const T &”是你的意思。


建议 - 不必担心性能,花时间让代码正常工作,并写信给读者进行沟通。然后,当时间和精力和兴趣(和你的主管)允许时,测试......证明任何希望获得性能提升的东西。

+0

Bt仍然会减慢编译器的工作速度? – 2015-02-24 08:28:46

+0

@Nannypatel - 传递'const T&'vs'T'会影响编译器吗?不知道如何衡量。你多久编一次?传递一个4字节(与编译器有关的)'const T&'比复制一个n-K字节的结构要好吗?大概。但用户会看到差异吗?完成一次后,可能不会。当完成10^6次,也许,取决于所有其他的东西正在进行。 I.E.这取决于...我知道。我知道。你想从应该知道的人那里得到一个简单的答案。通过练习,你会形成你自己的观点。 – 2015-02-24 23:16:24

1

取决于结构的大小。

  • 如果结构体很小(例如几个整数),那么按值传递通常会更快。
  • 如果结构比这个大得多,通过引用传递几乎总是更好。
1

传递引用意味着复制指针(64位机器中的8个字节)。如果你想传递的结构大于一个指针,那么它会比较慢,因为它需要复制更多的数据。

+0

结构可以传递指针在C++? – 2015-02-24 04:24:57

+0

结构(对象或结构)在内存中有一个地址。如果您选择通过引用传递该参数,则会将该地址复制到该函数。 – Jcao02 2015-02-24 04:31:52

+0

哪个更好?按价值或参考结构调用? – 2015-02-24 04:33:57