gpt4 book ai didi

c++ - 让编译器初始化数组或手动遍历数组进行初始化更快吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:43 26 4
gpt4 key购买 nike

int array[100] = {};

int array[100];
for(int i=0; i<100; ++i){
array[i] = 0;
}

或者它们相等?有什么区别?

最佳答案

非静态分配数组的初始化很可能对两个所示变体以相同的方式实现。您将必须测量或查看生成的程序集。

对于静态分配的数据(C++ 中的 namespace scope 数据),在 UNIX 上有 BSS segment对于零初始化数据和 data segment对于非零初始化数据。 BSS 段中的符号位置仅指定位置和大小,它们的内容隐式为零并且在可执行文件中不占用大小。我当然会尝试利用大数组的零初始化。 (然而,大部分时间我都在处理大数组,我不知道它们必须有多大,而且我无论如何都必须动态分配和初始化它们。)

一旦您需要不同于零的初始值,它们的编译时初始化将占用可执行文件中的空间 (data segment),您将面临经典的空间/时间权衡。

鉴于当今 CPU 速度比内存和磁盘带宽快得多,动态初始化将带您走很长的路,而且更加灵活。

关于c++ - 让编译器初始化数组或手动遍历数组进行初始化更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22318677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com