赞助商

函数参数或局部变量

发布时间:2019-05-15 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了函数参数或局部变量脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个重复数百万次的循环.在这个循环里面我有一个函数调用.

在这个函数的内部,我需要在一开始就创建一些临时变量.现在,哪一个更好:

a)在代码开头创建临时变量,在循环开始时初始化变量,并将其作为参数传递
b)在被调用函数的开头创建刚刚的本地临时变量?

这是一个问题吗?我想知道哪一点被认为是更好的做法,哪一个更快.

解决方法

我们为some_function()抛出一些可能的定义,这个函数将从你的循环中调用.
// Method 1
void some_function() {
    int temporary;

    // Use temporary
}

// Method 2
void some_function(int temporary) {
    // Use temporary
}

// Method 3
void some_function(int *temporary) {
    // Use *temporary
}

方法1可能是这些选项中最可读的,所以这是我喜欢的,除非你有一个很好的理由去做别的事情.除了您的编译器正在调用函数之外,它还可能比其他任何一个都要快.如果是这样,那么所有三个都可能执行完全相同(如果编译器无法优化远程指针取消引用,方法3可能会更慢).

如果编译器没有内联,那么方法2可能比方法1慢.这是因为在堆栈分配的内存方面,它们是相同的 – 函数参数将以相同的方式存储在堆栈中当地人在这个上下文中,函数参数和本地的唯一区别是函数参数可以被调用者赋予一个值.将调用者的值传递给函数的这一步(理论上讲)会减慢调用速度.

方法3几乎肯定会变慢,因为对临时内存的访问将包含间接级别.与访问本地时相比,引用一个指针不是一个便宜的操作.

当然,如果表现绝对关键,那么你应该对这些方法进行基准测试.我怀疑方法1将变成最快(或至少不比其他的慢),并且另外似乎对我更可读.

总结

以上是脚本之家为你收集整理的函数参数或局部变量全部内容,希望文章能够帮你解决函数参数或局部变量所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: