Move feedback stutter bug report to android folder
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
#ifndef _WDL_TIMING2_H_
|
||||
#define _WDL_TIMING2_H_
|
||||
|
||||
#if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
|
||||
#include "time_precise.h"
|
||||
#endif
|
||||
|
||||
class wdl_timing_accumulator
|
||||
{
|
||||
public:
|
||||
|
||||
#if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
|
||||
|
||||
wdl_timing_accumulator(const char *name=NULL)
|
||||
{
|
||||
m_cnt=0;
|
||||
m_tot=m_cur=0.0;
|
||||
m_name = name ? name : "[unnamed]";
|
||||
m_depth = 0;
|
||||
}
|
||||
~wdl_timing_accumulator()
|
||||
{
|
||||
Report("final");
|
||||
}
|
||||
|
||||
static void _format_big_integer(double usec, char *buf, int buflen)
|
||||
{
|
||||
char tmp[256];
|
||||
#ifdef _MSC_VER
|
||||
_snprintf(tmp, sizeof(tmp), "%.0f", usec);
|
||||
#else
|
||||
snprintf(tmp, sizeof(tmp), "%.0f", usec);
|
||||
#endif
|
||||
int len = strlen(tmp);
|
||||
char *from = tmp, *to = buf;
|
||||
if (len*4/3 < buflen)
|
||||
{
|
||||
while (len--)
|
||||
{
|
||||
*to++ = *from++;
|
||||
if (len && len%3 == 0) *to++ = ',';
|
||||
}
|
||||
*to = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
lstrcpyn(to, from, buflen);
|
||||
}
|
||||
}
|
||||
|
||||
void Report(const char *caption=NULL) const
|
||||
{
|
||||
if (m_cnt)
|
||||
{
|
||||
const double usec=1000000.0;
|
||||
char buf1[256], buf2[256];
|
||||
_format_big_integer(m_tot*usec/(double)m_cnt, buf1, sizeof(buf1));
|
||||
_format_big_integer(m_tot*usec, buf2, sizeof(buf2));
|
||||
wdl_log_force("timing %s%s%s%s: %.0f calls, %s usec/call, %s usec total\n",
|
||||
m_name, caption ? " (" : "", caption ? caption : "", caption ? ")" : "",
|
||||
(double)m_cnt, buf1, buf2);
|
||||
}
|
||||
}
|
||||
|
||||
void Begin()
|
||||
{
|
||||
if (!m_depth++)
|
||||
m_cur = time_precise();
|
||||
}
|
||||
void End()
|
||||
{
|
||||
WDL_ASSERT(m_depth > 0);
|
||||
if (!--m_depth)
|
||||
{
|
||||
WDL_ASSERT(m_cur != 0.0);
|
||||
m_tot += time_precise()-m_cur;
|
||||
m_cur=0.0;
|
||||
m_cnt++;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
WDL_INT64 m_cnt;
|
||||
double m_tot, m_cur;
|
||||
const char *m_name;
|
||||
int m_depth;
|
||||
#else
|
||||
|
||||
wdl_timing_accumulator(const char *name=NULL) {}
|
||||
~wdl_timing_accumulator() {}
|
||||
void Report(const char *caption=NULL) {}
|
||||
void Begin() {}
|
||||
void End() {}
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
class wdl_timing_accumulator_hold
|
||||
{
|
||||
public:
|
||||
#if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
|
||||
wdl_timing_accumulator_hold(wdl_timing_accumulator *p) : m_p(p) { if (p) p->Begin(); }
|
||||
~wdl_timing_accumulator_hold() { if (m_p) m_p->End(); }
|
||||
wdl_timing_accumulator *m_p;
|
||||
#else
|
||||
wdl_timing_accumulator_hold(wdl_timing_accumulator *p) {}
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user