【问题标题】:Initializing an Array in C++ : the fastest way?在 C++ 中初始化数组:最快的方法?
【发布时间】:2022-01-13 21:55:21
【问题描述】:

在 C++ 中用零初始化 int 数组的最快方法是什么?

int plus_number[CA - 1];
for (int & i : plus_number) {
    i = 0;
}

int plus_number[CA - 1] = {0};

或者也许还有其他方法?

【问题讨论】:

  • 你可以试试memset()Here for detail
  • 有什么阻碍您对替代方法进行基准测试并为您的硬件获取有用的指标?
  • 战术说明:你很少需要最快的。以足够快的速度停止通常具有更短的开发周期。
  • 如果您无法衡量零初始化与不初始化的影响,那么您的程序不需要在这方面进行优化。一些代码分析和检测将帮助您发现主要的性能问题。我强烈怀疑这不是其中之一。
  • btw CA 是 const

标签: c++ arrays performance initialization zero-initialization


【解决方案1】:

您可以简单地使用int plus_number[CA - 1]{};

这将对数组的所有成员进行零初始化。

【讨论】:

    【解决方案2】:

    初始化数组的最快方法是默认初始化它。在默认可初始化元素类型(和非静态存储持续时间)的情况下,这会使元素具有不确定的值。

    如果您希望所有元素都为零,则可以使用值初始化。这可能比默认初始化稍慢。您的两个建议都可能与值初始化一样快。

    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2011-07-23
    • 2012-04-30
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多