c ++ получает время выполнения указанной функции c - PullRequest
0 голосов
/ 08 февраля 2020

В настоящее время я работаю над проектом, в котором я пишу динамический c алгоритм и рекурсивный алгоритм для задачи о ранце. Мне нужно сравнить время, необходимое для выполнения каждого алгоритма. Я немного застрял в том, как это сделать .. Вот то, что я пробовал до сих пор, и в настоящее время делаю:

для Ex вот мой динамический c алгоритм:

int dynamic(int value[], int weight[], int n, int w){
  // create arrray
  //value per weight too optimize

    //2d matrix



    int matrix[n+1][w+1];
    for(int i = 0; i <=n; i++){
      for(int x = 0; x<=w; x++){
        matrix[i][x] = 0;

      }

    }

    for(int itemIndex = 1; itemIndex<=n; itemIndex++) {
      for(int weightIndex = 1; weightIndex<=w; weightIndex++){

      int currentValue = matrix[itemIndex - 1][weightIndex];
      int itemWeight = weight[itemIndex - 1];
      int potentValue = 0;

      if(itemWeight <=  weightIndex) {
      potentValue = value[itemIndex - 1];
      int weightLeft = weightIndex - itemWeight;
      potentValue += matrix[itemIndex -1][weightLeft];
      }

      matrix[itemIndex][weightIndex] = max(potentValue, currentValue);

      }


    }

return matrix[n][w];


}

Тогда у меня есть случайная функция, которая рандомизирует кучу вещей внутри моей программы, поэтому я тоже все время здесь выполняю. Вот как это выглядит:

clock_t StartTime = clock();
recursive(vals, wts, n, w);
   clock_t EndTime = clock();
   cout << "Time for dynamic: " << (float)(EndTime- StartTime)/ CLOCKS_PER_SEC /   << endl;
  // recursive(vals, wts, n, w);

Я получаю вывод 0 для каждого алгоритма. Должен ли я вызывать время внутри каждого алгоритма?

...