如何在 Allegro 5 中以秒为单位计算时间
How to count time in seconds in Allegro 5
我在 Allegro5 中计算时间时遇到问题。
我必须去学校做项目,在那里我将展示 shellsort,它是如何工作的以及它对数组排序的速度有多快,但有一个问题
我不知道如何以秒为单位计算时间,我做了一些这样的代码,但不起作用
ALLEGRO_TIMER *shellTimer = al_create_timer(1.0);
al_start_timer(shellTimer);
// ALGORYTM SHELLA
while (distance) {
shellCounter++;
for (int j = NUMBER_OF_ELEMENTS - distance - 1; j >= 0; j--) {
pos = array[j];
i = j + distance;
shellCounter += 2;
while ((i < NUMBER_OF_ELEMENTS) && (pos > array[i])) {
array[i - distance] = array[i];
i += distance;
counter += 2;
}
array[i - distance] = pos;
shellCounter++;
}
distance /= 3;
shellCounter++;
}
shellTime = al_get_timer_count(shellTimer);
al_stop_timer(shellTimer);
当我执行它时它什么都不做,shellTime
变量是一个int64_t
您可以使用 al_get_time 获取当前时间(以秒为单位),但 allegro 计时器的准确性仅与底层 os 时钟一样准确。
您真正需要的是针对这种情况的高性能计时器。看看Query performance counter
在 Windows 和 clock_gettime 在 Linux
他们会给你 nanos秒精度
我在 Allegro5 中计算时间时遇到问题。 我必须去学校做项目,在那里我将展示 shellsort,它是如何工作的以及它对数组排序的速度有多快,但有一个问题
我不知道如何以秒为单位计算时间,我做了一些这样的代码,但不起作用
ALLEGRO_TIMER *shellTimer = al_create_timer(1.0);
al_start_timer(shellTimer);
// ALGORYTM SHELLA
while (distance) {
shellCounter++;
for (int j = NUMBER_OF_ELEMENTS - distance - 1; j >= 0; j--) {
pos = array[j];
i = j + distance;
shellCounter += 2;
while ((i < NUMBER_OF_ELEMENTS) && (pos > array[i])) {
array[i - distance] = array[i];
i += distance;
counter += 2;
}
array[i - distance] = pos;
shellCounter++;
}
distance /= 3;
shellCounter++;
}
shellTime = al_get_timer_count(shellTimer);
al_stop_timer(shellTimer);
当我执行它时它什么都不做,shellTime
变量是一个int64_t
您可以使用 al_get_time 获取当前时间(以秒为单位),但 allegro 计时器的准确性仅与底层 os 时钟一样准确。
您真正需要的是针对这种情况的高性能计时器。看看Query performance counter
在 Windows 和 clock_gettime 在 Linux
他们会给你 nanos秒精度