forked from Mirror/frr
[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:
parent
d3d7e237fd
commit
bcdda30bae
|
@ -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>
|
2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||||
|
|
||||||
* command.c: (config_write_host) Save "log timestamp precision"
|
* command.c: (config_write_host) Save "log timestamp precision"
|
||||||
|
|
25
lib/log.c
25
lib/log.c
|
@ -100,18 +100,25 @@ quagga_timestamp(int timestamp_precision, char *buf, size_t buflen)
|
||||||
(buflen > cache.len+1+timestamp_precision))
|
(buflen > cache.len+1+timestamp_precision))
|
||||||
{
|
{
|
||||||
/* should we worry about locale issues? */
|
/* should we worry about locale issues? */
|
||||||
long divisor = 100000;
|
static const int divisor[] = {0, 100000, 10000, 1000, 100, 10, 1};
|
||||||
char *p = buf+cache.len;
|
int prec;
|
||||||
*p++ = '.';
|
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
|
do
|
||||||
{
|
{
|
||||||
*p++ = '0'+(clock.tv_usec/divisor);
|
*p-- = '0'+(clock.tv_usec % 10);
|
||||||
clock.tv_usec %= divisor;
|
clock.tv_usec /= 10;
|
||||||
divisor /= 10;
|
|
||||||
}
|
}
|
||||||
while (--timestamp_precision > 0);
|
while (--prec > 0);
|
||||||
*p = '\0';
|
*p = '.';
|
||||||
return p-buf;
|
return cache.len+1+timestamp_precision;
|
||||||
}
|
}
|
||||||
buf[cache.len] = '\0';
|
buf[cache.len] = '\0';
|
||||||
return cache.len;
|
return cache.len;
|
||||||
|
|
Loading…
Reference in a new issue