Автор: alex82 22.3.2011, 10:19
Написал небольшую библиотеку, позволяющую получать время с момента запуска системы в миллисекундах. Библиотека может быть полезна для оценки производительности кода.
mtime.rar ( 1.29 килобайт )
: 17
mtime_src.rar ( 330 байт )
: 12
Пример использования:
Код
require"mtime"
print( mtime.get() )
Автор: Setuper 22.3.2011, 22:26
не кроссплатформенно
Вот код функции для линукса:
Код
#ifndef _WIN32
#include <sys/time.h>
unsigned long GetTickCount() {
struct timeval tv;
gettimeofday(&tv, NULL);
return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
}
#endif // _WIN32
Автор: alex82 22.3.2011, 23:31
Setuper
Если уж делать кроссплатформенно, то нужно округлить tv.tv_usec / 1000
Кстати, можно ли получить время в микросекундах под вендой?
Автор: Invisible 23.3.2011, 0:09
Уважаемые alex82 и Setuper. Сможете сделать либу для создания таймера для Lua ? Или это невозможно ?
PS Ссори за оффтоп.
Автор: Alexey 23.3.2011, 2:07
Используй хабсофт с таймерами ;)
Автор: alex82 23.3.2011, 10:47
...или Lua-AIO с wxLua. Или тот же Lua-AIO с созданием ветви и использованием ThreadWait()
Автор: Setuper 23.3.2011, 21:46
Цитата(alex82 @ 22.3.2011, 23:31)
Setuper
Если уж делать кроссплатформенно, то нужно округлить tv.tv_usec / 1000
Кстати, можно ли получить время в микросекундах под вендой?
Зачем округлять? Какой смысл несёт округление?
Чтобы получить время в микросекундах под виндой можно написать аналог линуксовой функции gettimeofday:
Код
#include <time.h>
void gettimeofday(struct timeval * tv, struct timezone *) {
union {
FILETIME ft;
unsigned __int64 ns100;
} now;
GetSystemTimeAsFileTime(&now.ft);
//116444736000000000 = (24 * 3600) * ((1970 - 1601) * 365 + 89) * (1000000000 / 100)
tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);
tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL);
}
struct timeval tv;
gettimeofday(&tv, NULL);
std::cout << tv.tv_usec << std:endl;