如何在C ++中测量内存分配时间?

时间:2013-04-10 19:38:46

标签: c++ arrays function static heap

我需要做以下事情:

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

    这是我的代码:

    用户环境

    #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()保存到变量?
    • 我做错了什么以及如何解决?

1 个答案:

答案 0 :(得分:2)

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

b)您需要确定每次函数调用之间的时间。另外,在每个循环中确定的重点是什么。

您可以使用以毫秒为单位确定时间差异。

 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";

同样,您可以确定剩余函数调用所花费的时间。