legatt 32f4597c4d Base frontend module
- Naming style migrated to camel-case
- P7lib logger sources added
- Vcpkg manifest, CMake presets and build moved to root
- SDL2, Vulkan and RmlUi dependencies added
- Logger LOG macro added
- Logger  configuration
- SDL2 window configuration
- Vulkan configuration
- RmlUi configuration
- SDL event loop
2025-08-08 00:07:32 +03:00

171 lines
4.7 KiB
C++

#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <stdarg.h>
#include <limits.h>
#include "GTypes.h"
#include "PLock.h"
#include "PTime.h"
#include "PThreadShell.h"
#include "Ticks.h"
#include "UTF.h"
#include "AList.h"
#include "PString.h"
#include "PProcess.h"
#include "PConsole.h"
#include "P7_Client.h"
#include "P7_Trace.h"
tBOOL Print2Buffer(char *o_pBuffer,
const char *i_pFormat,
...
)
{
if ( (NULL == o_pBuffer)
|| (NULL == i_pFormat)
)
{
return FALSE;
}
va_list arglist;
va_start(arglist, i_pFormat);
vsprintf(o_pBuffer, i_pFormat, arglist);
va_end(arglist);
return TRUE;
}
#define ITERATIONS_COUNT (100000)
int main(int i_iArgC, char* i_pArgV[])
{
UNUSED_ARG(i_iArgC);
UNUSED_ARG(i_pArgV);
printf("This test measures the time it is necessary for:\n");
printf(" 1. print %d times simple string to buffer\n", ITERATIONS_COUNT);
printf(" 2. print %d times simple string to console\n", ITERATIONS_COUNT);
printf(" this test combine test #1 and console printing\n");
printf(" 3. print & deliver %d times simple string to trace server\n", ITERATIONS_COUNT);
printf(" server will receive:\n");
printf(" * Text message\n");
printf(" * Level (error, warning, .. etc)\n");
printf(" * Time with 100ns granularity\n");
printf(" * Current thread ID\n");
printf(" * Current module ID\n");
printf(" * Current processor number\n");
printf(" * Function name\n");
printf(" * File name\n");
printf(" * File line number\n");
printf(" * Sequence number\n");
printf("*************************************************************************\n");
printf("Press ENTER to start ....\n");
Get_Char();
tUINT64 l_qwTime = 0;
tUINT64 l_qwTime_1 = 0;
tUINT64 l_qwTime_2 = 0;
tUINT64 l_qwTime_3 = 0;
////////////////////////////////////////////////////////////////////////////
//Test 1
char l_pText[4096];
l_qwTime = GetPerformanceCounter();
for (tUINT32 l_dwI = 0; l_dwI < ITERATIONS_COUNT; l_dwI ++)
{
Print2Buffer(l_pText, "[%s][%s][%d][%d][%d] Test format string, iteration is %d",
__FILE__,
__FUNCTION__,
__LINE__,
CProc::Get_Thread_Id(),
CProc::Get_Processor(),
l_dwI);
}
l_qwTime_1 = (GetPerformanceCounter() - l_qwTime) / (GetPerformanceFrequency() / 1000ull);
////////////////////////////////////////////////////////////////////////////
//Test 2
l_qwTime = GetPerformanceCounter();
for (tUINT32 l_dwI = 0; l_dwI < ITERATIONS_COUNT; l_dwI ++)
{
printf(l_pText, "[%s][%s][%d][%d][%d] Test format string, iteration is %d",
__FILE__,
__FUNCTION__,
__LINE__,
CProc::Get_Thread_Id(),
CProc::Get_Processor(),
l_dwI
);
}
l_qwTime_2 = (GetPerformanceCounter() - l_qwTime) / (GetPerformanceFrequency() / 1000ull);
////////////////////////////////////////////////////////////////////////////
//Test 3
IP7_Client *l_pClient = P7_Create_Client(TM("/P7.PSize=1472 /P7.Pool=65536"));
IP7_Trace *l_pTrace = P7_Create_Trace(l_pClient, TM("Speed Test"));
if ( (l_pClient)
&& (l_pTrace)
)
{
l_qwTime = GetPerformanceCounter();
for (tUINT32 l_dwI = 0; l_dwI < ITERATIONS_COUNT; l_dwI ++)
{
l_pTrace->P7_QTRACE(1, 0, TM("Test format string, iteration is %d"), l_dwI);
}
l_qwTime_3 = (GetPerformanceCounter() - l_qwTime) / (GetPerformanceFrequency() / 1000ull);
}
if (l_pTrace)
{
l_pTrace->Release();
l_pTrace = NULL;
}
if (l_pClient)
{
l_pClient->Release();
l_pClient = NULL;
}
printf("\n*****************************************************************\n");
printf("Test results:\n");
printf(" Test 1 (to buffer) duration: %d ms, %d per second\n",
(tUINT32)l_qwTime_1,
(tUINT32)((1000.0 / (tDOUBLE)l_qwTime_1) * (tDOUBLE)ITERATIONS_COUNT)
);
printf(" Test 2 (to console) duration: %d ms, %d per second\n",
(tUINT32)l_qwTime_2,
(tUINT32)((1000.0 / (tDOUBLE)l_qwTime_2) * (tDOUBLE)ITERATIONS_COUNT)
);
printf(" Test 3 (to P7 trace) duration: %d ms, %d per second\n",
(tUINT32)l_qwTime_3,
(tUINT32)((1000.0 / (tDOUBLE)l_qwTime_3) * (tDOUBLE)ITERATIONS_COUNT)
);
return 0;
}