With UAsm tests i used this tool.
@DEL *.obj
@DEL *.err
_RunCmdTime.exe %1 -c -coff -q \masm32\m32lib\*.asm >NUL
@ECHO %1
@DEL *.obj
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
int __cdecl mainCRTStartup(void)
//int main(int argc, char **argv)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
FILETIME ftCreationTime, ftExitTime, ftKernelTime, ftUserTime;
SYSTEMTIME stTime;
DWORD nLen, nWrite;
long long ll;
char *pChar;
char szTmp[100];
pChar = GetCommandLine();
if (*pChar == '"') {
pChar++;
while (*pChar && *pChar != '"')
pChar++;
pChar++;
} else {
while (*pChar && *pChar != ' ')
pChar++;
}
while (*pChar <= ' ')
pChar++;
ftExitTime.dwHighDateTime = 0;
ftExitTime.dwLowDateTime = 0;
memset(&si, 0, sizeof(si));
si.cb = sizeof(STARTUPINFO);
if (CreateProcess(NULL, pChar, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
{
WaitForSingleObject(pi.hProcess, INFINITE);
GetProcessTimes(pi.hProcess, &ftCreationTime, &ftExitTime, &ftKernelTime, &ftUserTime);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
ll = *((long long*)&ftExitTime) - *((long long*)&ftCreationTime);
FileTimeToSystemTime(((FILETIME*)&ll), &stTime);
nLen = wsprintf(szTmp, "%d.%ds\n", stTime.wSecond, stTime.wMilliseconds);
//printf("%d.%ds %lld\n", stTime.wSecond, stTime.wMilliseconds, ll);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), szTmp, nLen, &nWrite, NULL);
} //else printf("error\n");
return 0;
}