1

我需要执行以下操作:

  1. 用 C++ 编写三个函数
  2. 一个函数静态声明一个大数组
  3. 一个函数在堆栈上声明相同的数组
  4. 最后一个函数从 HEAP 创建相同的数组
  5. 每个子程序必须被调用很多次(100,000 次)
  6. 输出每个所需的时间

这是我的代码:

用户环境

#include <time.h>
#include <iostream>
using namespace std;

void func1();
void func2();
void func3();

int main()
{

    for (i = 0; i < 100000; i++)
    {
        func1();
        func2();
        func3();
    }
}

执行

void func1()
{
    int static my_array[1000];
}

void func2()
{
    int my_array[1000];
}

void func3()
{
    new int my_array[1000];
}

问题:

  • 我是在 Main 还是在每个 Function 中创建数组(就像我所做的那样)?
  • 我是在主函数还是在每个函数中找到时间?
  • 是时间()还是时钟()?
  • 我是否必须将 Time() 保存到变量中?
  • 我做错了什么以及如何解决?
4

1 回答 1

2

a)您可以按照示例中提到的那样在函数内部创建数组,以便您可以确定每个函数为数组分配内存所花费的时间。

b) You need determine time taken by between each function call. other wise what's the point in determining in each loop.

You can use to determine time diff in milliseconds.

 typedef std::chrono::high_resolution_clock Clock;
        typedef std::chrono::milliseconds milliseconds;
        Clock::time_point t0 = Clock::now();
         fun1(); //function call
        Clock::time_point t1 = Clock::now();
        milliseconds ms = std::chrono::duration_cast<milliseconds>(t1 - t0);
        std::cout << ms.count() << "ms\n";

Similarly you can determine how much time it took for remaining function call.

于 2013-04-10T19:47:08.387 回答