Мой вопрос касается разницы истекшего времени в зависимости от точки.
Чтобы найти наибольшую часть общего истекшего времени при выполнении в моем коде, я использовал функцию clock
.
source: Расчет времени, прошедшего в C ++
Сначала я поместил функцию clock
в начало и конец основной функции. (На самом деле, есть некоторые объявления переменных, но я удалил их для удобства чтения моих вопросов). Тогда я думаю, что смогу измерить общее истекшее время.
int main(){
using clock = std::chrono::system_clock;
using sec = std::chrono::duration<double>;
const auto before = clock::now();
...
std::cin >> a >> b;
lgstCommSubStr findingLCSS(a,b,numberofHT,cardi,SubsA);
const sec duration = clock::now() - before;
std::cout << "It took " << duration.count() << "s in main function" << std::endl;
return 0;
}
Во-вторых, я поставил функцию clock
в классе findingLCSS
. Этот класс предназначен для поиска самой длинной общей подстроки между двумя строками. Это класс, который на самом деле делает мой алгоритм. Я пишу код для поиска его в конструкторе. Поэтому при создании этого класса он возвращает самую длинную общую информацию о подстроке. Я думаю, что это истекшее время будет фактическим временем работы алгоритма.
public:
lgstCommSubStr(string a, string b, int numHT, int m, vector <int> ** SA):
strA(a), strB(b), hashTsize(numHT), SubstringsA(SA),
primeNs(numHT), xs(numHT),
A_hashValues(numHT), B_hashValues(numHT),
av(numHT), bv(numHT), cardi(m)
{
using clock = std::chrono::system_clock;
using sec = std::chrono::duration<double>;
const auto before = clock::now();
...
answer ans=binarySearch(a,b, numHT);
std::cout << ans.i << " " << ans.j << " " << ans.length << "\n";
const sec duration = clock::now() - before;
std::cout << "It took " << duration.count() << "s in the class" << std::endl;
}
Вывод будет таким, как показано ниже.
tool coolbox
1 1 3
It took 0.002992s in inner class
It took 4.13945s in main function
Это означает, что 'tool' и 'coolbox' имеют подстроку ' ool '
Но меня смущает, что между двумя значениями есть большая разница.
Поскольку первый раз - общее время, а второй - время выполнения алгоритма, я должен подумать о его разнице. время - это прошедшее время для переменных объявления.
Но это выглядит странно, потому что я думаю, что время объявления переменных короткое.
Есть ли ошибка в измерении прошедшего времени?
Пожалуйста, дайте мне подсказку для устранения неполадок. Спасибо за чтение!