Lua自帶的os函數,os.time()只取到秒。網上搜索lua 毫秒都是要使用 luasocket,以爲真沒那個必要爲了一個函數,用一套用不上的東西。試着寫了個擴展,代碼以下。socket
C語言:函數
#include <stdio.h> #include <sys/time.h> #include <time.h> #include <lua.h> #include <lauxlib.h> //微秒 static int getmicrosecond(lua_State *L) { struct timeval tv; gettimeofday(&tv,NULL); long microsecond = tv.tv_sec*1000000+tv.tv_usec; lua_pushnumber(L, microsecond); return 1; } //毫秒 static int getmillisecond(lua_State *L) { struct timeval tv; gettimeofday(&tv,NULL); long millisecond = (tv.tv_sec*1000000+tv.tv_usec)/1000; lua_pushnumber(L, millisecond); return 1; } int luaopen_usertime(lua_State *L) { luaL_checkversion(L); luaL_Reg l[] = { {"getmillisecond", getmillisecond}, {"getmicrosecond", getmicrosecond}, { NULL, NULL }, }; luaL_newlib(L, l); return 1; }
編譯命令: cc -g -O2 -Wall -fPIC --shared usertime.c -o usertime.soui
Lua調用:lua
local utime = require "usertime" local microsecond = utime.getmicrosecond() local millisecond = utime.getmillisecond() print('microsecond',microsecond) print('millisecond',millisecond)