【发布时间】:2010-12-09 01:52:47
【问题描述】:
在 ACM 示例中,我必须为动态编程构建一个大表。我必须在每个单元格中存储两个整数,所以我决定使用std::pair<int, int>。然而,分配一个巨大的数组需要 1.5 秒:
std::pair<int, int> table[1001][1001];
后来,我把这段代码改成了
struct Cell {
int first;
int second;
}
Cell table[1001][1001];
分配用时 0 秒。
是什么解释了这种巨大的时间差异?
【问题讨论】:
-
我相信你的意思是 ACM ICPC。
-
您是否在启用优化的情况下对此进行了测试?
-
如果给
Cell添加一个无参构造函数会有什么表现? -
在法官服务器上启用的优化。 (认为我听说过 O3)
-
@Etan 通过 clang (900.0.39.2),
-O0需要 0.007 秒,-O3需要 2e-07 秒。通过 gcc (8.1),-O0需要 0.005 秒,-O3需要 0 秒。这个问题会随着时间的推移而失效吗?
标签: c++ performance std-pair