【发布时间】:2016-04-28 11:52:58
【问题描述】:
这是我在这里的第一个问题,我也是 C++ 的新手,但我会尽我所能,尽可能具体。请告诉我是否含糊不清:
我正在尝试使用 chrono 和 duration_cast 测量排序方法(合并排序)对给定整数数组进行排序所需的时间。这是有问题的代码sn-p:
auto t1 = std::chrono::high_resolution_clock::now();
mergesort(sortingArray, temp, 0, num - 1);
auto t2 = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> fp_ms = t2 - t1;
std::cout << fp_ms.count() << " seconds\n";
而且我得到的输出总是“0 秒”,无论我制作的数组有多大,它都需要排序。即使它对一百万个整数进行排序并且有明显的执行时间,它仍然给我相同的输出。
我基本上遵循这里给出的示例:http://en.cppreference.com/w/cpp/chrono/duration/duration_cast
我使用的是合并排序函数,而不是 f()。如何让它正确测量我的排序方法?
编辑:我在 Windows 10 中使用 minGW 通过 Powershell 进行编译。命令如下所示:
g++ -std=c++11 .\Merge.cpp
【问题讨论】:
-
mergesort是你自己的函数吗?你确定它实际上是在对数组进行排序吗? -
是的,
mergesort是我自己的函数。我已经打印了排序后的数组以确保它有效。 -
您能否尝试切换打印纳秒,以确保它不会四舍五入为 0。还详细说明哪些编译器/平台可能有助于您追踪任何错误。
-
好的,我现在切换到纳秒,它给了我相同的输出,所以那里没有进展。我在 Windows 10 中使用 minGW 通过 Powershell 进行编译。命令如下所示:
g++ -std=c++11 .\Merge.cpp。 -
尝试切换到
steady_clock。