svn commit: r183960 - head/usr.bin/ministat
Max Laier
max at love2party.net
Thu Oct 16 20:50:04 UTC 2008
On Thursday 16 October 2008 22:39:02 Poul-Henning Kamp wrote:
> Author: phk
> Date: Thu Oct 16 20:39:02 2008
> New Revision: 183960
> URL: http://svn.freebsd.org/changeset/base/183960
>
> Log:
> Make ministat(1) vastly faster on huge datasets.
>
> Modified:
> head/usr.bin/ministat/Makefile
> head/usr.bin/ministat/ministat.c
...
> static void
> AddPoint(struct dataset *ds, double a)
> {
> - struct point *pp, *pp2;
> + double *dp;
>
> - pp = calloc(1, sizeof *pp);
> - pp->val = a;
> -
> - ds->n++;
> + if (ds->n >= ds->lpoints) {
> + dp = ds->points;
> + ds->lpoints *= 4;
> + ds->points = calloc(sizeof *ds->points, ds->lpoints);
> + memcpy(ds->points, dp, sizeof *dp * ds->n);
+ free(dp);
???
> + }
> + ds->points[ds->n++] = a;
> ds->sy += a;
> ds->syy += a * a;
> - if (TAILQ_EMPTY(&ds->list)) {
> - TAILQ_INSERT_HEAD(&ds->list, pp, list);
> - return;
> - }
> - TAILQ_FOREACH(pp2, &ds->list, list) {
> - if (pp->val < pp2->val) {
> - TAILQ_INSERT_BEFORE(pp2, pp, list);
> - return;
> - }
> - }
> - TAILQ_INSERT_TAIL(&ds->list, pp, list);
> }
--
/"\ Best regards, | mlaier at freebsd.org
\ / Max Laier | ICQ #67774661
X http://pf4freebsd.love2party.net/ | mlaier at EFnet
/ \ ASCII Ribbon Campaign | Against HTML Mail and News
More information about the svn-src-head
mailing list