vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| On Sat, 3 Feb 2007, Tobias Ulmer wrote: Cool! I already did some profiling and saw date routines taking up large amounts of CPU. But other stuff drew my attention after that. Thanks a lot of finding that hotspot. -Otto > --- entries.c.orig Fri Feb 2 22:50:33 2007 > +++ entries.c Sat Feb 3 00:29:10 2007 > @@ -115,8 +115,7 @@ > struct cvs_ent *ent; > char *fields[CVS_ENTRIES_NFIELDS], *buf, *sp, *dp; > > - buf = xstrdup(entry); > - sp = buf; > + buf = sp = xstrdup(entry); > i = 0; > do { > dp = strchr(sp, CVS_ENTRIES_DELIM); > @@ -129,7 +128,7 @@ > if (i < CVS_ENTRIES_NFIELDS) > fatal("missing fields in entry line '%s'", entry); > > - ent = (struct cvs_ent *)xmalloc(sizeof(*ent)); > + ent = xmalloc(sizeof(*ent)); > ent->ce_buf = buf; > > if (*fields[0] == '\0') > @@ -156,12 +155,14 @@ > if ((ent->ce_rev = rcsnum_parse(sp)) == NULL) > fatal("failed to parse entry revision '%s'", entry); > > - if (strcmp(fields[3], CVS_DATE_DUMMY) == 0 || > + if (fields[3][0] == '\0' || > + strcmp(fields[3], CVS_DATE_DUMMY) == 0 || > strncmp(fields[3], "Initial ", 8) == 0 || > strncmp(fields[3], "Result of merge", 15) == 0) > ent->ce_mtime = CVS_DATE_DMSEC; > else { > - strptime(fields[3], "%a %b %d %T %Y", &t); > + if (strptime(fields[3], "%a %b %d %T %Y", &t) == NULL) > + fatal("'%s' is not a valid date", fields[3]); > t.tm_isdst = 0; > t.tm_gmtoff = 0; > ent->ce_mtime = mktime(&t); > > > > time [open]cvs -d vanadium:/home/tobiasu/cvs co pcc > > gcvs: > 0m6.11s real 0m0.09s user 0m0.07s system > 0m6.66s real 0m0.11s user 0m0.03s system > 0m6.27s real 0m0.11s user 0m0.07s system > 0m5.72s real 0m0.10s user 0m0.06s system > 0m6.52s real 0m0.13s user 0m0.06s syste > > ocvs: > 0m27.81s real 0m20.49s user 0m0.04s system > 0m23.69s real 0m16.36s user 0m0.07s system > 0m18.70s real 0m12.92s user 0m0.03s system > 0m31.58s real 0m23.27s user 0m0.07s system > 0m9.06s real 0m5.13s user 0m0.07s system > 0m6.54s real 0m3.29s user 0m0.03s system > 0m22.88s real 0m15.99s user 0m0.02s system > > ocvs+patch: > 0m5.16s real 0m0.06s user 0m0.03s system > 0m5.27s real 0m0.03s user 0m0.03s system > 0m5.45s real 0m0.03s user 0m0.03s system > 0m5.18s real 0m0.03s user 0m0.04s system > 0m5.21s real 0m0.03s user 0m0.03s system > > > Tobias |