Это - быстрый и грязный путь ко времени блок кода C/C++. Вам нужно к #include
, который должен быть стандартным заголовком...
struct timeval start, end;
gettimeofday(&start, NULL);
// benchmark code
gettimeofday(&end, NULL);
long long time = (end.tv_sec * (unsigned int)1e6 + end.tv_usec) -
(start.tv_sec * (unsigned int)1e6 + start.tv_usec);
Это должно дать 1-2Вµs разрешение в современных системах Linux (что ОС Вы используете?), что означает, что это не хорошо подходит для изучения очень для взятия объектов < 10Вµs. Однако Вы, кажется, не находитесь в той ситуации.
Обновление: На основе указанной ОС... реализация Windows gettimeofday ()
Я использую снимки состояния EBS для резервного копирования каталога данных MySQL более года. Работает отлично. У меня никогда не было проблем с использованием этих снимков в качестве основы для замены (или клонирования) установки MySQL.
Лучшая практика - отформатировать том EBS с файловой системой, допускающей замораживание, такой как XFS. Это позволяет вам получить согласованный моментальный снимок: сбросить память MySQL на диск, заморозить файловую систему, моментальный снимок и затем разморозить. Весь процесс занимает менее 10 секунд (но может занять больше времени, когда БД интенсивно используется).
См. эту статью Эрика Хаммонда, чтобы узнать о сценарии, который сделает все это за вас.
Меня больше всего беспокоит использование моментальных снимков EBS для резервного копирования баз данных на том уровне, на котором они работают. Моментальные снимки работают на очень низком уровне на диске и создают образ независимо от состояния приложений, записывающих на него. Теоретически ваш резервный образ может находиться в середине транзакции или чего-то подобного, что может затруднить восстановление, если такое время когда-нибудь придет.