Usage Examples
The following show benchmarking library usage examples.
Enabling Data-Collection and Reporting
#include ”nvplayfair.h”
typedef struct {
uint32_t fps;
uint32_t numOfSamples;
...
} testArgs_t;
int main(int argc, char **argv)
{
NvpPerfData_t latencies;
uint64_t startTimeMark, endTimeMark;
testArgs_t *testArgs = parse_cli_args();
/* Setup */
NVP_CHECKERR_EXIT(NvpConstructPerfData(&latencies, testArgs->numOfSamples, "myLatencies.csv"));
...
for (uint32_t i = 0U; i < testArgs->numOfSamples; ++i) {
startTimeMark = NvpGetTimeMark();
/* Perform required functions */
...
endTimeMark = NvpGetTimeMark();
NVP_CHECKERR_EXIT(NvpRecordSample(&latencies, startTimeMark, endTimeMark));
}
/* Print report */
NVP_CHECKERR_EXIT(NvpPrintStats(&latencies, NULL, USEC, ”My Test Latencies”));
NVP_CHECKERR_EXIT(NvpDumpData(&latencies));
/* Cleanup */
NVP_CHECKERR_EXIT(NvpDestroyPerfData(&latencies));
return 0;
}
Adding Rate-Limit to a Benchmark
#include ”nvplayfair.h”
typedef struct {
uint32_t fps;
uint32_t numOfSamples;
...
} testArgs_t;
int main(int argc, char **argv)
{
NvpRateLimitInfo_t rateLimitInfo;
testArgs_t *testArgs = parse_cli_args();
/* Setup */
NVP_CHECKERR_EXIT(NvpRateLimitInit(&rateLimitInfo, testArgs->fps));
...
NVP_CHECKERR_EXIT(NvpMarkPeriodicExecStart(&rateLimitInfo));
for (uint32_t i = 0U; i < testArgs->numOfSamples; ++i) {
/* Perform required functions */
...
NVP_CHECKERR_EXIT(NvpRateLimitWait(&rateLimitInfo));
}
return 0;
}