Когда мы должны делать
blockquote>rm -rf *
?Основное использование
Когда что-то происходит неожиданно. Это включает в себя:
- «У меня установлена библиотека FOO , но CMake не может ее найти»,
- «Я изменил файл BAR , но CMake не перестраивает свои зависимости »,
- и т. д.
Другие использования
Технически, удаление каталога сборки обычно помогает в очистке кэша CMake. (Таким образом, тот же эффект может быть достигнут командой
rm CMakeCache.txt
). Это в основном необходимо для повторного поиска таких вещей, как библиотеки или файлы заголовков. Примеры:
- «Я изменил настройки среды, поэтому CMake нужно найти другую библиотеку »
- «Я изменил переменные CMake до
find_package
, поэтому CMake необходимо найти другую библиотеку "
Нет никакой функции ANSI C, которая обеспечивает лучше, чем 1 разрешение второго раза, но функция POSIX gettimeofday
обеспечивает разрешение микросекунды. Функция тактового генератора только измеряет количество времени, что процесс потратил выполнение и не точен во многих системах.
можно использовать эту функцию как это:
struct timeval tval_before, tval_after, tval_result;
gettimeofday(&tval_before, NULL);
// Some code you want to time, for example:
sleep(1);
gettimeofday(&tval_after, NULL);
timersub(&tval_after, &tval_before, &tval_result);
printf("Time elapsed: %ld.%06ld\n", (long int)tval_result.tv_sec, (long int)tval_result.tv_usec);
Это возвращается Time elapsed: 1.000870
на моей машине.
#include <time.h>
clock_t uptime = clock() / (CLOCKS_PER_SEC / 1000);
Я всегда использую clock_gettime () функция, возвращая время из часов CLOCK_MONOTONIC. Возвращенное время является количеством времени, в секундах и наносекундах, начиная с некоторой неуказанной точки в прошлом, таких как системный запуск эпохи.
#include <stdio.h>
#include <stdint.h>
#include <time.h>
int64_t timespecDiff(struct timespec *timeA_p, struct timespec *timeB_p)
{
return ((timeA_p->tv_sec * 1000000000) + timeA_p->tv_nsec) -
((timeB_p->tv_sec * 1000000000) + timeB_p->tv_nsec);
}
int main(int argc, char **argv)
{
struct timespec start, end;
clock_gettime(CLOCK_MONOTONIC, &start);
// Some code I am interested in measuring
clock_gettime(CLOCK_MONOTONIC, &end);
uint64_t timeElapsed = timespecDiff(&end, &start);
}
Лучшая точность, которую можно возможно получить, с помощью x86-единственной "rdtsc" инструкции, которая может обеспечить, разрешение уровня тактовых сигналов (ne должен, конечно, принять во внимание, что стоимость rdtsc называет себя, который может быть измерен легко на запуске приложения).
основная выгода здесь измеряет количество часов в секунду, которые не должны быть слишком твердыми.