【发布时间】:2016-11-29 06:35:09
【问题描述】:
我正在使用标准 c 库的 qsort 函数对数百万个组织在一个数组中的结构进行排序。我试图通过创建具有相同长度的结构指针数组来优化性能。与我的预期相反,第二个变体的执行时间更慢:
qsort 一个结构数组:199s qsort 结构指针数组:204
我预计在内存中交换指针块的时间会比移动结构(大小 576)更快。我可能有任何性能泄漏或这是已知行为吗?
【问题讨论】:
-
你必须测量它,通过在调用排序方法之前和之后调用
time(3) -
是否有可能使用 qsort 对结构数组进行排序已经交换了指针而不是结构?
-
另外 5 秒是 2.5% 的差异,这可能在您的误差范围内。
-
不,
qsort将移动结构(如果这是你告诉它的)。您需要显示代码。特别是,如果比较函数所花费的时间比移动结构的时间大,那么指针数组将无济于事。 -
发布代码。没有代码(并向我们展示您的具体测量值),这是毫无意义的。
标签: c arrays pointers struct qsort