返回常量的函数是否比void函数慢?
Does a function that returns a constant work slower than a void function?
最简单的例子:
int foo()
{
doSomething();
return 0;
}
void bar()
{
doSomething();
return;
}
int main()
{
foo();
bar();
}
bar
比foo
快,为什么?
这是一个微优化,你不应该甚至考虑它。然而,在谈论性能时,通常需要注意的是:
- 再次测量
- 改变一些事情
- 确保你理解你在测量什么以及为什么变化会产生影响
- 用新的理解再改变一点,检查前提是否成立
对于返回一个小对象的特殊情况(可以放在寄存器中),成本可以忽略不计,在大多数体系结构中基本上是加载到寄存器中。
void将是…但仍然可以忽略不计。
系统中的返回值通过x86上的eax寄存器传递。在大多数系统中,它只是一个推入寄存器,然后可能在返回到调用函数时创建对象。由于返回这样的东西只会向ax发送一个0,这可能会减少一个汇编命令,因为void可能不会调用它,并且当它返回到调用函数时不需要赋值int。
无论哪种方式,这都不会提高您编写的任何应用程序的性能。如果您有性能问题,请查看其他地方:)
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- 在派生函数中指定void*参数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 如何将指针从一个void函数传递到另一个C++
- 为什么全局函数 void showA(A&x) 能够访问 A 类的私有成员?
- 如何将函数<void()>写入管道/套接字对?
- 错误:无法在没有对象的情况下调用成员函数'void Fortest::run()'|
- 标准的大小::函数<void(int&)>类型
- 如何函数<void(字符串消息)>绑定到成员函数?
- 函数void()返回一个值,而不是char或string
- 函数void QQuickWindow::setDefaultAlphaBuffer(bool useAlpha)的用途
- 错误 LNK2019:函数 "void __cdecl Padding(int)" 中引用未解析的外部符号___iob_func
- 我可以有一个~析构函数(void)吗?
- 函数<void(T)> 带有默认参数的参数
- 错误:参数太少,无法函数"void alpha(std::string*,student)"