[logging] Minor performance tweak

2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* log.c: (quagga_timestamp) Optimize the subsecond timestamp generation.
This commit is contained in:
Andrew J. Schorr 2007-04-29 15:48:22 +00:00
parent d3d7e237fd
commit bcdda30bae
2 changed files with 20 additions and 9 deletions

View file

@ -1,3 +1,7 @@
2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.c: (quagga_timestamp) Optimize the subsecond timestamp generation.
2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* command.c: (config_write_host) Save "log timestamp precision"

View file

@ -100,18 +100,25 @@ quagga_timestamp(int timestamp_precision, char *buf, size_t buflen)
(buflen > cache.len+1+timestamp_precision))
{
/* should we worry about locale issues? */
long divisor = 100000;
char *p = buf+cache.len;
*p++ = '.';
static const int divisor[] = {0, 100000, 10000, 1000, 100, 10, 1};
int prec;
char *p = buf+cache.len+1+(prec = timestamp_precision);
*p-- = '\0';
while (prec > 6)
/* this is unlikely to happen, but protect anyway */
{
*p-- = '0';
prec--;
}
clock.tv_usec /= divisor[prec];
do
{
*p++ = '0'+(clock.tv_usec/divisor);
clock.tv_usec %= divisor;
divisor /= 10;
*p-- = '0'+(clock.tv_usec % 10);
clock.tv_usec /= 10;
}
while (--timestamp_precision > 0);
*p = '\0';
return p-buf;
while (--prec > 0);
*p = '.';
return cache.len+1+timestamp_precision;
}
buf[cache.len] = '\0';
return cache.len;