1

次のことを行う必要があります。

  1. C++ で 3 つの関数を作成する
  2. 1 つの関数が大きな配列を宣言している STATICALLY
  3. 1 つの関数が STACK で同じ配列を宣言している
  4. 最後の関数は、ヒープから同じ配列を作成します
  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];
}

質問:

  • メインまたは各関数で配列を作成しますか (私が行ったように)?
  • メインまたは各機能で時間を見つけますか?
  • Time() または Clock() ですか?
  • Time() を変数に保存する必要がありますか?
  • 私は何を間違っていて、それを修正する方法は?
4

1 に答える 1

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

同様に、残りの関数呼び出しにかかった時間を確認できます。

于 2013-04-10T19:47:08.387 に答える