我有以下代码:
char stats[109]; /* !LINE UNDER QUESTION! */
sprintf(stats,
"OBJECTS:\n%u/256\n" \
"BLOCKS:\n%u/" GP_ConstantExpand(Map_MaxLightmaps) "\n" \
"QUADS:\n%u/" GP_ConstantExpand(Map_MaxLightmaps) "\n" \
"LIGHTMAPS:\n%u/" GP_ConstantExpand(Map_MaxLightmaps) "\n" \
"CHECKPOINTS:\n%u/256\n" \
"HINTS:\n%u/256",
Map_This_Header.objects, Map_This_Header.blocks, Map_This_QuadCount,
lmapcount, Map_This_Header.checkpoints, Map_This_Header.hints);
静态分配109个字符的数组(109对于我的文本来说足够了),或者将数组对齐到128个字节会提高性能吗?
我不关心文件大小和内存使用,性能对我来说很重要,我的代码必须在旧计算机上以60 FPS运行。
答案 0 :(得分:2)
我想这与代码运行的硬件有太多关联。我们可以考虑两个相反的参数来回答这个问题,假设在你的数组周围的堆栈上会分配其他变量:
然而,第二个参数似乎不太相关,因为它只会影响您可以实例化的众多变量中的一个变量。在任何情况下,如果您想确定,都需要对代码进行基准测试。
答案 1 :(得分:0)
如果对齐它会提高性能,编译器应该在适当的优化级别为您调整它。这是因为编译器可以自由地对自动变量进行排序和对齐。
一般情况下,除非您的代码实际要求将其对齐以进行操作(例如,如果您在指针字段的低位存储整数,从而需要实际的基指针与更大的边界对齐),你不应该将这样的假设编码到你的代码中。