【问题标题】:How to measure memory allocation time in C++? [closed]如何在 C++ 中测量内存分配时间? [关闭]
【发布时间】:2025-11-21 10:20:02
【问题描述】:

我需要做以下事情:

  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() 还是 Clock()?
  • 是否必须将 Time() 保存到变量中?
  • 我做错了什么以及如何解决?

【问题讨论】:

  • 应该是clock()。我知道。而且您需要将调用的开始保存到一个变量。 float start_time = clock()/CLOCKS_PER_SEC;,就在 for 循环之前。 float end time = clock()/CLOCKS_PER_SEC; 就在 for 循环之后。和cout &lt;&lt; start_time - end_time &lt;&lt; endl;printf("Time taken: %f s.", start_time - end_time); 打印输出。
  • 您提出的问题最好由您的老师或助教回答。这给你分配了这个问题。

标签: c++ arrays function static heap-memory


【解决方案1】:

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

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

【讨论】: