我知道如果你有编译时变量初始化,程序将比运行时初始化运行得更快,因为内存需要动态分配。
我的问题是:动态分配的内存是否会对初始分配开销之外的程序性能产生长期影响?访问动态内存是否更昂贵?我的问题是关于Fortran的,但它可能也与C等有关。
因此,如果我有一些初始命令行参数来初始化一堆数组的大小以开始计算,那么与将该参数设置为常量参数并每次重新编译相比,它是否会显着减慢程序速度想用不同大小的数组进行计算?
答案 0 :(得分:1)
您所询问的内容主要取决于系统。有些系统可能比动态内存更好地优化静态数据。在FORTRAN委员会因FORTRADA 90惨败而疯狂的前几天,FORTRAN一直都是静止的。 FORTRAN编译器甚至常常使用静态调用帧。所有静态都有一些理论上有可能获得更好的性能。
也就是说,一旦分配了动态内存,访问它的可能性几乎不会比在几乎所有情况下访问静态数据都慢。