当前位置: 首页 > 知识库问答 >
问题:

访问静态函数变量比访问全局变量慢吗?

骆英纵
2023-03-14
struct A {
    // complex type...
};
const A& f()
{
    static A local{};
    return local;
}

A global{};
const A& g()
{
    return global;
}

我假设f()在每次调用时都必须检查其变量是否初始化,因此f()将比g()慢,这样做对吗?

共有1个答案

管梓
2023-03-14

当然,您在概念上是正确的,但当代的体系结构可以处理这一点。

一个现代的编译器和体系结构会安排流水线,以便假定已经初始化的分支。因此,初始化的开销将导致额外的管道转储,仅此而已。

如果你有任何疑问,检查一下集合。

 类似资料:
  • 问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go

  • 问题内容: 我从很多地方都听说过,全局变量本来就是讨厌和邪恶的,但是当使用一些非面向对象的Javascript时,我看不到如何避免它们。说我有一个函数,它使用复杂的算法使用随机数和填充物来生成数字,但是我需要在其他函数(回调或其他函数)中继续使用该特定数,因此不能成为同一函数的一部分。 如果最初生成的数字是局部变量,则无法从那里访问它。如果函数是对象方法,我可以将数字设为属性,但是它们不是属性,并

  • 问题内容: 这(我的代码的简化版本)不起作用: 为什么?我要访问,因为如果失败,我想在上面记录错误。 递归地调用自身以创建目录列表,因此我担心将整体传递给自身(如中所述)可能会损害性能。 有没有一种方法可以在不传递参数的情况下访问内部?(PHP 5.2.x +) 编辑: 如果代码看起来像这样呢? 问题答案: 您必须将其传递给函数: 或将其声明为global: 如果变量不是全局变量,而是在外部函数中

  • 问题内容: 我刚刚开始学习Go,有些事情引起了我的注意。 功能如下: 等等。作为来自C语言的人,我想知道: 1)是否可以通过变量本身来调用这些函数(如中所述)? 2)这是一种常见的做法(定义泛型函数并让其找出类型及其应执行的操作),还是仅用于内置类型。例如,如果我要定义自己的类型,例如,是否应该在类型内定义和附加函数,并将其命名为 还是应该定义一个接收列表的函数,例如: 问题答案: 1-您不能将内

  • 如何从多个线程同时访问静态变量。 如果我有这样的课 我需要访问线程1的值,比如 从线程2中,我需要设置如下值 这会导致内存冲突吗?。如果是,建议使用什么方法来处理这种情况?。

  • SocketIO活动处理不同于路由处理,在于它引入了许多容易混淆的东西,围绕着SocketIO什么可以做,什么不可以做。最主要的区别就是SocketIO活动发生在单个长期运行在上下文的请求之中。 尽管有所不同,Flask-SocketIO将环境改造成类似于常规HTTP请求,使SocketIO活动处理更加轻松。接下来的列表描述了什么将会生效,什么不会。 在活动处理函数之前推送应用的上下文使得curr