Home > database >  Why do I spend more time with binary search than with linear search?
Why do I spend more time with binary search than with linear search?

Time:02-03

I have a problem with the code that does a binary search. As far as I know binary search is faster than linear search. I have a task on leetcode in which I have to perform a binary search, but I get a Time Limit Exceeded (TLE) error

int search(int* nums, int numsSize, int target){
int m = 0;
int l = 0;
int r = numsSize - 1;
do{
    m = r - (r - l) / 2;
    if(nums[m] < target) r = m   1;
    else l = m - 1;
}
while ((l <= r) && (nums[m] != target));
return m;
}

When I do a linear search I don't get an error

CodePudding user response:

Your function is broken.

I downloaded it, built a test program, and ran it. Eventually, m will get stuck on the wrong index and the function loops infinitely.

I created a modified version that works correctly.

Change:

m = r - (r - l) / 2;

Into:

m = l   (r - l) / 2;

In the code below, there are three functions:

  1. orig -- your original code
  2. flat -- linear search
  3. fix1 -- original code fix

Compile with/without -DORIG:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define sysfault(_fmt...) \
    do { \
        printf(_fmt); \
        exit(1); \
    } while (0)

struct fnc {
    int (*fnc)(int *nums, int numsSize, int target);
    const char *tag;
    double elap;
};

int capacity = 0;
int *buf = NULL;

int
orig(int *nums, int numsSize, int target)
{
    int m = 0;
    int l = 0;
    int r = numsSize - 1;

    do {
        m = r - (r - l) / 2;
        if (nums[m] < target)
            r = m   1;
        else
            l = m - 1;
    } while ((l <= r) && (nums[m] != target));

    return m;
}

int
flat(int *nums, int numsSize, int target)
{
    int m = 0;
    int r = -1;

    for (;  m < numsSize;    m) {
        if (nums[m] == target) {
            r = m;
            break;
        }
    }

    return r;
}

int
fix1(int *nums, int numsSize, int target)
{
    int m;
    int l = 0;
    int h = numsSize - 1;

    do {
        m = l   (h - l) / 2;
        if (nums[m] < target)
            l = m   1;
        else
            h = m - 1;
    } while ((l <= h) && (nums[m] != target));

    return m;
}

struct fnc fnclist[] = {
    { .fnc = flat, .tag = "flat" },
    { .fnc = fix1, .tag = "fix1" },
#if ORIG
    { .fnc = orig, .tag = "orig" },
#endif
    { .fnc = NULL },
};

double
tscgetf(void)
{
    struct timespec ts;
    double sec;

    clock_gettime(CLOCK_MONOTONIC,&ts);

    sec = ts.tv_nsec;
    sec /= 1e9;
    sec  = ts.tv_sec;

    return sec;
}

int
xrand(int mod)
{
    int val = rand();
    val %= mod;
    return val;
}

void
dofnc(struct fnc *fnc,int *buf,int count,int idxexp)
{
    double tscbeg;
    double tscend;

    tscbeg = tscgetf();
    int idxact = fnc->fnc(buf,count,buf[idxexp]);
    tscend = tscgetf();

    tscend -= tscbeg;
    printf("%.9f %s %d/%d %d\n",tscend,fnc->tag,idxexp,idxact,count);
    if (idxact != idxexp)
        sysfault("dofnc: fault\n");
}

void
dotest(void)
{

    int count = xrand(10000)   1;

    if (count > capacity) {
        capacity = count;
        buf = realloc(buf,sizeof(buf) * capacity);
    }

    int val = 0;
    for (int idx = 0;  idx < count;    idx) {
        int dta = xrand(100);
        val  = dta;
        buf[idx] = val;
    }

    int idxexp = xrand(count);

    printf("\n");
    printf("count=%d\n",count);
    for (struct fnc *fnc = fnclist;  fnc->fnc != NULL;    fnc)
        dofnc(fnc,buf,count,idxexp);
}

int
main(void)
{

    setlinebuf(stdout);

    for (int tstno = 1;  tstno <= 10;    tstno)
        dotest();
}

Here is the program output (compiled without -DORIG).

When compiled with -DORIG, the original hangs (we just get the flat and fix1 output).

From the timings, binary search is clearly faster than linear for most large counts.


count=9384
0.000006721 flat 2253/2253 9384
0.000000241 fix1 2253/2253 9384

count=5993
0.000003500 flat 1324/1324 5993
0.000000181 fix1 1324/1324 5993

count=8955
0.000001280 flat 426/426 8955
0.000000200 fix1 426/426 8955

count=340
0.000000076 flat 7/7 340
0.000000157 fix1 7/7 340

count=1964
0.000003769 flat 1298/1298 1964
0.000000195 fix1 1298/1298 1964

count=21
0.000000103 flat 17/17 21
0.000000108 fix1 17/17 21

count=4228
0.000011880 flat 4139/4139 4228
0.000000209 fix1 4139/4139 4228

count=7858
0.000006904 flat 2398/2398 7858
0.000000231 fix1 2398/2398 7858

count=8963
0.000001663 flat 537/537 8963
0.000000218 fix1 537/537 8963

count=6304
0.000001787 flat 556/556 6304
0.000000282 fix1 556/556 6304

UPDATE:

Here's a version that:

  1. adds a timeout by setting a signal handler for SIGALRM and using alarm and sigsetjmp and setlongjmp.

  2. Calculates the overhead of the clock_gettime calls (from tscgetf).

  3. Runs each test 3 times and takes the best [lowest] time to account for any system overhead/timeslicing.

  4. Picks random indexes/values to search for.

  5. Picks values below minimum array value (should fail).

  6. Picks values above maximum array value (should fail).

  7. Tests random array sizes.

  8. Tests array sizes in the range 1 to 100 (by 3).

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <time.h>
#include <setjmp.h>

#define sysfault(_fmt...) \
    do { \
        printf(_fmt); \
        exit(1); \
    } while (0)

struct fnc {
    int (*fnc)(int *nums, int numsSize, int target);
    const char *tag;
    double elap;
};

int capacity = 0;
int *buf = NULL;
jmp_buf jbuf;

int opt_d;                              // 1=dump array on faults
int opt_i;                              // 1=ignore errors

int
orig(int *nums, int numsSize, int target)
{
    int m = 0;
    int l = 0;
    int r = numsSize - 1;

    do {
        m = r - (r - l) / 2;
        if (nums[m] < target)
            r = m   1;
        else
            l = m - 1;
    } while ((l <= r) && (nums[m] != target));

    return m;
}

int
flat(int *nums, int numsSize, int target)
{
    int m = 0;
    int r = -1;

    for (;  m < numsSize;    m) {
        if (nums[m] == target) {
            r = m;
            break;
        }
    }

    return r;
}

int
fix1(int *nums, int numsSize, int target)
{
    int m;
    int l = 0;
    int v;
    int h = numsSize - 1;
    int ret = -1;

    while (l <= h) {
        m = l   (h - l) / 2;

        v = nums[m];
        if (v == target) {
            ret = m;
            break;
        }

        if (v < target)
            l = m   1;
        else
            h = m - 1;
    }

    return ret;
}

struct fnc fnclist[] = {
    { .fnc = flat, .tag = "flat" },
    { .fnc = fix1, .tag = "fix1" },
    { .fnc = orig, .tag = "orig" },
    { .fnc = NULL },
};

double tscbias = 0.0;

double
tscgetf(void)
{
    struct timespec ts;
    double sec;

    clock_gettime(CLOCK_MONOTONIC,&ts);

    sec = ts.tv_nsec;
    sec /= 1e9;
    sec  = ts.tv_sec;

    return sec;
}

void
tscinit(void)
{
    double tscbeg;
    double tscend;
    double elap = 99.0;

    for (int tryno = 1;  tryno <= 100;    tryno) {
        tscbeg = tscgetf();
        tscend = tscgetf();
        tscend -= tscbeg;
        if (tscend < elap)
            elap = tscend;
    }

    printf("tscinit: %.9f\n",elap);
    tscbias = elap;
}

double
tscelap(double tscbeg,double tscend)
{

    tscend -= tscbeg;
    tscend -= tscbias;

    return tscend;
}

int
xrand(int mod)
{
    int val = rand();
    val %= mod;
    return val;
}

int
dofnc(struct fnc *fnc,int *buf,int count,int idxexp,int valexp)
{
    double tscbeg = 0.0;
    double tscend;
    double elap = 99.0;
    int tmout;
    int fault = 0;

    int idxact = -1;

    for (int tryno = 1;  tryno <= 3;    tryno) {
        tmout = sigsetjmp(jbuf,1);

        // timeout occurred -- get [phony] elapsed time
        if (tmout) {
            tscend = tscgetf();
            elap = tscelap(tscbeg,tscend);
            break;
        }

        alarm(1);

        tscbeg = tscgetf();
        idxact = fnc->fnc(buf,count,valexp);
        tscend = tscgetf();

        alarm(0);

        // remember the best time
        tscend = tscelap(tscbeg,tscend);
        if (tscend < elap)
            elap = tscend;
    }

    // check result
    do {
        if (idxact == idxexp)
            break;
        if (tmout)
            break;
        fault = 1;
    } while (0);

    printf("%.9f %s I:%d/%d V:%d%s%s\n",
        elap,fnc->tag,idxexp,idxact,valexp,
        tmout ? " (TIME)" : "",
        fault ? " (FAULT)" : "");

    return fault;
}

void
dotest(int count)
{
    int fault = 0;

    if (count <= 0)
        count = xrand(10000)   1;

    if (count > capacity) {
        capacity = count;
        buf = realloc(buf,sizeof(buf) * capacity);
    }

    int val = 0;
    for (int idx = 0;  idx < count;    idx) {
        int dta = xrand(99)   1;
        val  = dta;
        buf[idx] = val;
    }

    int idxexp = xrand(count);

    printf("\n");
    printf("dotest: count=%d lo=%d hi=%d\n",count,buf[0],buf[count - 1]);

    for (struct fnc *fnc = fnclist;  fnc->fnc != NULL;    fnc) {
        int valexp = buf[idxexp];
        if (dofnc(fnc,buf,count,idxexp,valexp))
            fault = 1;

        // check for value lower than min
        valexp = buf[0] - 1;
        if (dofnc(fnc,buf,count,-1,valexp))
            fault = 1;

        // check for value higher than max
        valexp = buf[count - 1]   1;
        if (dofnc(fnc,buf,count,-1,valexp))
            fault = 1;
    }

    // dump array on error/fault
    do {
        if (! fault)
            break;

        if (! opt_d)
            break;

        int totlen = 0;

        printf("ARRAY:\n");
        for (int idx = 0;  idx < count;    idx) {
            totlen  = printf(" %d:%d",idx,buf[idx]);
            if (totlen > 65) {
                printf("\n");
                totlen = 0;
            }
        }
        if (totlen > 0)
            printf("\n");
    } while (0);

    if (fault && (! opt_i))
        sysfault("dotest: aborting ...\n");
}

void
sighdr(int signo)
{
    siglongjmp(jbuf,1);
}

int
main(int argc,char **argv)
{

    --argc;
      argv;

    for (;  argc > 0;  --argc,   argv) {
        char *cp = *argv;
        if (*cp != '-')
            break;

        cp  = 2;
        switch (cp[-1]) {
        case 'i':
            opt_i = ! opt_i;
            break;
        }
    }

    setlinebuf(stdout);
    signal(SIGALRM,sighdr);

    tscinit();

    for (int tstno = 1;  tstno <= 10;    tstno)
        dotest(-1);

    for (int count = 1;  count <= 100;  count  = 3)
        dotest(count);
}

Here is the program output:

tscinit: 0.000000026

dotest: count=9384 lo=44 hi=470252
0.000002194 flat I:2253/2253 V:114229
0.000010131 flat I:-1/-1 V:43
0.000007218 flat I:-1/-1 V:470253
0.000000081 fix1 I:2253/2253 V:114229
0.000000079 fix1 I:-1/-1 V:43
0.000000048 fix1 I:-1/-1 V:470253
1.000016339 orig I:2253/-1 V:114229 (TIME)
1.000014557 orig I:-1/-1 V:43 (TIME)
1.000009347 orig I:-1/-1 V:470253 (TIME)

dotest: count=5993 lo=55 hi=299486
0.000001431 flat I:1324/1324 V:67045
0.000006461 flat I:-1/-1 V:54
0.000006460 flat I:-1/-1 V:299487
0.000000035 fix1 I:1324/1324 V:67045
0.000000038 fix1 I:-1/-1 V:54
0.000000053 fix1 I:-1/-1 V:299487
1.000009870 orig I:1324/-1 V:67045 (TIME)
1.000029920 orig I:-1/-1 V:54 (TIME)
1.000009728 orig I:-1/-1 V:299487 (TIME)

dotest: count=8955 lo=17 hi=445765
0.000000465 flat I:426/426 V:21179
0.000006463 flat I:-1/-1 V:16
0.000008701 flat I:-1/-1 V:445766
0.000000063 fix1 I:426/426 V:21179
0.000000064 fix1 I:-1/-1 V:16
0.000000048 fix1 I:-1/-1 V:445766
1.000016202 orig I:426/-1 V:21179 (TIME)
1.000009818 orig I:-1/-1 V:16 (TIME)
1.000009810 orig I:-1/-1 V:445766 (TIME)

dotest: count=340 lo=70 hi=16804
0.000000014 flat I:7/7 V:486
0.000000372 flat I:-1/-1 V:69
0.000000372 flat I:-1/-1 V:16805
0.000000035 fix1 I:7/7 V:486
0.000000017 fix1 I:-1/-1 V:69
0.000000028 fix1 I:-1/-1 V:16805
1.000009743 orig I:7/-1 V:486 (TIME)
1.000009810 orig I:-1/-1 V:69 (TIME)
1.000032772 orig I:-1/-1 V:16805 (TIME)

dotest: count=1964 lo=18 hi=97889
0.000001410 flat I:1298/1298 V:64382
0.000001936 flat I:-1/-1 V:17
0.000002120 flat I:-1/-1 V:97890
0.000000041 fix1 I:1298/1298 V:64382
0.000000035 fix1 I:-1/-1 V:17
0.000000039 fix1 I:-1/-1 V:97890
1.000009294 orig I:1298/-1 V:64382 (TIME)
1.000013307 orig I:-1/-1 V:17 (TIME)
1.000008924 orig I:-1/-1 V:97890 (TIME)

dotest: count=21 lo=50 hi=1126
0.000000031 flat I:17/17 V:1024
0.000000029 flat I:-1/-1 V:49
0.000000030 flat I:-1/-1 V:1127
0.000000022 fix1 I:17/17 V:1024
0.000000021 fix1 I:-1/-1 V:49
0.000000016 fix1 I:-1/-1 V:1127
1.000023933 orig I:17/-1 V:1024 (TIME)
1.000008840 orig I:-1/-1 V:49 (TIME)
1.000009542 orig I:-1/-1 V:1127 (TIME)

dotest: count=4228 lo=96 hi=214509
0.000004465 flat I:4139/4139 V:210346
0.000004559 flat I:-1/-1 V:95
0.000004559 flat I:-1/-1 V:214510
0.000000038 fix1 I:4139/4139 V:210346
0.000000039 fix1 I:-1/-1 V:95
0.000000039 fix1 I:-1/-1 V:214510
1.000009090 orig I:4139/-1 V:210346 (TIME)
1.000009507 orig I:-1/-1 V:95 (TIME)
1.000009268 orig I:-1/-1 V:214510 (TIME)

dotest: count=7858 lo=70 hi=390374
0.000002593 flat I:2398/2398 V:120399
0.000005670 flat I:-1/-1 V:69
0.000005670 flat I:-1/-1 V:390375
0.000000033 fix1 I:2398/2398 V:120399
0.000000044 fix1 I:-1/-1 V:69
0.000000060 fix1 I:-1/-1 V:390375
1.000009538 orig I:2398/-1 V:120399 (TIME)
1.000009622 orig I:-1/-1 V:69 (TIME)
1.000011139 orig I:-1/-1 V:390375 (TIME)

dotest: count=8963 lo=60 hi=446543
0.000000585 flat I:537/537 V:26242
0.000006468 flat I:-1/-1 V:59
0.000006462 flat I:-1/-1 V:446544
0.000000069 fix1 I:537/537 V:26242
0.000000045 fix1 I:-1/-1 V:59
0.000000059 fix1 I:-1/-1 V:446544
1.000011390 orig I:537/-1 V:26242 (TIME)
1.000009583 orig I:-1/-1 V:59 (TIME)
1.000009641 orig I:-1/-1 V:446544 (TIME)

dotest: count=6304 lo=60 hi=317397
0.000000607 flat I:556/556 V:27198
0.000004554 flat I:-1/-1 V:59
0.000004549 flat I:-1/-1 V:317398
0.000000064 fix1 I:556/556 V:27198
0.000000048 fix1 I:-1/-1 V:59
0.000000054 fix1 I:-1/-1 V:317398
1.000044305 orig I:556/-1 V:27198 (TIME)
1.000018003 orig I:-1/-1 V:59 (TIME)
1.000013375 orig I:-1/-1 V:317398 (TIME)

dotest: count=1 lo=34 hi=34
0.000000011 flat I:0/0 V:34
0.000000011 flat I:-1/-1 V:33
0.000000011 flat I:-1/-1 V:35
0.000000009 fix1 I:0/0 V:34
0.000000011 fix1 I:-1/-1 V:33
0.000000018 fix1 I:-1/-1 V:35
0.000000017 orig I:0/0 V:34
1.000009685 orig I:-1/-1 V:33 (TIME)
1.000009896 orig I:-1/-1 V:35 (TIME)

dotest: count=4 lo=99 hi=250
0.000000009 flat I:0/0 V:99
0.000000013 flat I:-1/-1 V:98
0.000000013 flat I:-1/-1 V:251
0.000000012 fix1 I:0/0 V:99
0.000000012 fix1 I:-1/-1 V:98
0.000000015 fix1 I:-1/-1 V:251
1.000016379 orig I:0/-1 V:99 (TIME)
1.000009174 orig I:-1/-1 V:98 (TIME)
1.000009049 orig I:-1/-1 V:251 (TIME)

dotest: count=7 lo=33 hi=324
0.000000014 flat I:1/1 V:69
0.000000016 flat I:-1/-1 V:32
0.000000015 flat I:-1/-1 V:325
0.000000013 fix1 I:1/1 V:69
0.000000013 fix1 I:-1/-1 V:32
0.000000013 fix1 I:-1/-1 V:325
1.000013937 orig I:1/-1 V:69 (TIME)
1.000011886 orig I:-1/-1 V:32 (TIME)
1.000015891 orig I:-1/-1 V:325 (TIME)

dotest: count=10 lo=51 hi=446
0.000000013 flat I:3/3 V:213
0.000000023 flat I:-1/-1 V:50
0.000000016 flat I:-1/-1 V:447
0.000000014 fix1 I:3/3 V:213
0.000000014 fix1 I:-1/-1 V:50
0.000000016 fix1 I:-1/-1 V:447
1.000009785 orig I:3/-1 V:213 (TIME)
1.000009554 orig I:-1/-1 V:50 (TIME)
1.000009879 orig I:-1/-1 V:447 (TIME)

dotest: count=13 lo=13 hi=724
0.000000014 flat I:2/2 V:141
0.000000025 flat I:-1/-1 V:12
0.000000017 flat I:-1/-1 V:725
0.000000012 fix1 I:2/2 V:141
0.000000013 fix1 I:-1/-1 V:12
0.000000014 fix1 I:-1/-1 V:725
1.000010021 orig I:2/-1 V:141 (TIME)
1.000009654 orig I:-1/-1 V:12 (TIME)
1.000014118 orig I:-1/-1 V:725 (TIME)

dotest: count=16 lo=76 hi=645
0.000000022 flat I:13/13 V:573
0.000000027 flat I:-1/-1 V:75
0.000000021 flat I:-1/-1 V:646
0.000000020 fix1 I:13/13 V:573
0.000000014 fix1 I:-1/-1 V:75
0.000000016 fix1 I:-1/-1 V:646
1.000015331 orig I:13/-1 V:573 (TIME)
1.000013445 orig I:-1/-1 V:75 (TIME)
1.000009196 orig I:-1/-1 V:646 (TIME)

dotest: count=19 lo=54 hi=970
0.000000026 flat I:10/10 V:565
0.000000029 flat I:-1/-1 V:53
0.000000029 flat I:-1/-1 V:971
0.000000014 fix1 I:10/10 V:565
0.000000014 fix1 I:-1/-1 V:53
0.000000016 fix1 I:-1/-1 V:971
1.000009642 orig I:10/-1 V:565 (TIME)
1.000009610 orig I:-1/-1 V:53 (TIME)
1.000009402 orig I:-1/-1 V:971 (TIME)

dotest: count=22 lo=48 hi=1076
0.000000017 flat I:7/7 V:444
0.000000029 flat I:-1/-1 V:47
0.000000025 flat I:-1/-1 V:1077
0.000000020 fix1 I:7/7 V:444
0.000000014 fix1 I:-1/-1 V:47
0.000000022 fix1 I:-1/-1 V:1077
1.000010220 orig I:7/-1 V:444 (TIME)
1.000014361 orig I:-1/-1 V:47 (TIME)
1.000013648 orig I:-1/-1 V:1077 (TIME)

dotest: count=25 lo=42 hi=1184
0.000000031 flat I:16/16 V:785
0.000000032 flat I:-1/-1 V:41
0.000000024 flat I:-1/-1 V:1185
0.000000021 fix1 I:16/16 V:785
0.000000014 fix1 I:-1/-1 V:41
0.000000015 fix1 I:-1/-1 V:1185
1.000009388 orig I:16/-1 V:785 (TIME)
1.000009349 orig I:-1/-1 V:41 (TIME)
1.000011995 orig I:-1/-1 V:1185 (TIME)

dotest: count=28 lo=26 hi=1497
0.000000024 flat I:8/8 V:450
0.000000033 flat I:-1/-1 V:25
0.000000033 flat I:-1/-1 V:1498
0.000000022 fix1 I:8/8 V:450
0.000000014 fix1 I:-1/-1 V:25
0.000000016 fix1 I:-1/-1 V:1498
1.000010067 orig I:8/-1 V:450 (TIME)
1.000009827 orig I:-1/-1 V:25 (TIME)
1.000014836 orig I:-1/-1 V:1498 (TIME)

dotest: count=31 lo=24 hi=1436
0.000000047 flat I:20/20 V:915
0.000000069 flat I:-1/-1 V:23
0.000000075 flat I:-1/-1 V:1437
0.000000070 fix1 I:20/20 V:915
0.000000031 fix1 I:-1/-1 V:23
0.000000030 fix1 I:-1/-1 V:1437
1.000013925 orig I:20/-1 V:915 (TIME)
1.000010255 orig I:-1/-1 V:23 (TIME)
1.000011782 orig I:-1/-1 V:1437 (TIME)

dotest: count=34 lo=87 hi=1745
0.000000029 flat I:16/16 V:980
0.000000038 flat I:-1/-1 V:86
0.000000036 flat I:-1/-1 V:1746
0.000000010 fix1 I:16/16 V:980
0.000000015 fix1 I:-1/-1 V:86
0.000000018 fix1 I:-1/-1 V:1746
1.000015356 orig I:16/-1 V:980 (TIME)
1.000013789 orig I:-1/-1 V:86 (TIME)
1.000009397 orig I:-1/-1 V:1746 (TIME)

dotest: count=37 lo=11 hi=1650
0.000000038 flat I:29/29 V:1331
0.000000039 flat I:-1/-1 V:10
0.000000038 flat I:-1/-1 V:1651
0.000000014 fix1 I:29/29 V:1331
0.000000022 fix1 I:-1/-1 V:10
0.000000023 fix1 I:-1/-1 V:1651
1.000010122 orig I:29/-1 V:1331 (TIME)
1.000013891 orig I:-1/-1 V:10 (TIME)
1.000016981 orig I:-1/-1 V:1651 (TIME)

dotest: count=40 lo=89 hi=2263
0.000000036 flat I:23/23 V:1575
0.000000040 flat I:-1/-1 V:88
0.000000040 flat I:-1/-1 V:2264
0.000000023 fix1 I:23/23 V:1575
0.000000014 fix1 I:-1/-1 V:88
0.000000016 fix1 I:-1/-1 V:2264
1.000009746 orig I:23/-1 V:1575 (TIME)
1.000013715 orig I:-1/-1 V:88 (TIME)
1.000012347 orig I:-1/-1 V:2264 (TIME)

dotest: count=43 lo=23 hi=2179
0.000000035 flat I:26/26 V:1503
0.000000049 flat I:-1/-1 V:22
0.000000042 flat I:-1/-1 V:2180
0.000000020 fix1 I:26/26 V:1503
0.000000021 fix1 I:-1/-1 V:22
0.000000017 fix1 I:-1/-1 V:2180
1.000012506 orig I:26/-1 V:1503 (TIME)
1.000012921 orig I:-1/-1 V:22 (TIME)
1.000009616 orig I:-1/-1 V:2180 (TIME)

dotest: count=46 lo=66 hi=2278
0.000000019 flat I:1/1 V:84
0.000000043 flat I:-1/-1 V:65
0.000000043 flat I:-1/-1 V:2279
0.000000014 fix1 I:1/1 V:84
0.000000015 fix1 I:-1/-1 V:65
0.000000022 fix1 I:-1/-1 V:2279
1.000012092 orig I:1/-1 V:84 (TIME)
1.000009936 orig I:-1/-1 V:65 (TIME)
1.000009509 orig I:-1/-1 V:2279 (TIME)

dotest: count=49 lo=29 hi=2565
0.000000036 flat I:26/26 V:1662
0.000000046 flat I:-1/-1 V:28
0.000000044 flat I:-1/-1 V:2566
0.000000022 fix1 I:26/26 V:1662
0.000000015 fix1 I:-1/-1 V:28
0.000000017 fix1 I:-1/-1 V:2566
1.000009716 orig I:26/-1 V:1662 (TIME)
1.000009498 orig I:-1/-1 V:28 (TIME)
1.000009616 orig I:-1/-1 V:2566 (TIME)

dotest: count=52 lo=72 hi=2728
0.000000040 flat I:28/28 V:1354
0.000000048 flat I:-1/-1 V:71
0.000000054 flat I:-1/-1 V:2729
0.000000014 fix1 I:28/28 V:1354
0.000000014 fix1 I:-1/-1 V:71
0.000000023 fix1 I:-1/-1 V:2729
1.000010207 orig I:28/-1 V:1354 (TIME)
1.000011530 orig I:-1/-1 V:71 (TIME)
1.000009826 orig I:-1/-1 V:2729 (TIME)

dotest: count=55 lo=54 hi=2677
0.000000031 flat I:17/17 V:993
0.000000055 flat I:-1/-1 V:53
0.000000049 flat I:-1/-1 V:2678
0.000000041 fix1 I:17/17 V:993
0.000000014 fix1 I:-1/-1 V:53
0.000000022 fix1 I:-1/-1 V:2678
1.000009676 orig I:17/-1 V:993 (TIME)
1.000009553 orig I:-1/-1 V:53 (TIME)
1.000009855 orig I:-1/-1 V:2678 (TIME)

dotest: count=58 lo=6 hi=2569
0.000000048 flat I:31/31 V:1507
0.000000057 flat I:-1/-1 V:5
0.000000056 flat I:-1/-1 V:2570
0.000000015 fix1 I:31/31 V:1507
0.000000021 fix1 I:-1/-1 V:5
0.000000022 fix1 I:-1/-1 V:2570
1.000009519 orig I:31/-1 V:1507 (TIME)
1.000010096 orig I:-1/-1 V:5 (TIME)
1.000013881 orig I:-1/-1 V:2570 (TIME)

dotest: count=61 lo=55 hi=3223
0.000000063 flat I:54/54 V:2935
0.000000052 flat I:-1/-1 V:54
0.000000052 flat I:-1/-1 V:3224
0.000000033 fix1 I:54/54 V:2935
0.000000022 fix1 I:-1/-1 V:54
0.000000016 fix1 I:-1/-1 V:3224
1.000018225 orig I:54/-1 V:2935 (TIME)
1.000011663 orig I:-1/-1 V:54 (TIME)
1.000011810 orig I:-1/-1 V:3224 (TIME)

dotest: count=64 lo=24 hi=3309
0.000000056 flat I:42/42 V:2305
0.000000060 flat I:-1/-1 V:23
0.000000060 flat I:-1/-1 V:3310
0.000000015 fix1 I:42/42 V:2305
0.000000034 fix1 I:-1/-1 V:23
0.000000023 fix1 I:-1/-1 V:3310
1.000009987 orig I:42/-1 V:2305 (TIME)
1.000009362 orig I:-1/-1 V:23 (TIME)
1.000009670 orig I:-1/-1 V:3310 (TIME)

dotest: count=67 lo=22 hi=3548
0.000000030 flat I:21/21 V:1149
0.000000076 flat I:-1/-1 V:21
0.000000076 flat I:-1/-1 V:3549
0.000000041 fix1 I:21/21 V:1149
0.000000016 fix1 I:-1/-1 V:21
0.000000018 fix1 I:-1/-1 V:3549
1.000009903 orig I:21/-1 V:1149 (TIME)
1.000014023 orig I:-1/-1 V:21 (TIME)
1.000009173 orig I:-1/-1 V:3549 (TIME)

dotest: count=70 lo=43 hi=3672
0.000000014 flat I:1/1 V:80
0.000000094 flat I:-1/-1 V:42
0.000000079 flat I:-1/-1 V:3673
0.000000021 fix1 I:1/1 V:80
0.000000017 fix1 I:-1/-1 V:42
0.000000024 fix1 I:-1/-1 V:3673
1.000009550 orig I:1/-1 V:80 (TIME)
1.000009619 orig I:-1/-1 V:42 (TIME)
1.000009878 orig I:-1/-1 V:3673 (TIME)

dotest: count=73 lo=96 hi=3334
0.000000046 flat I:38/38 V:1790
0.000000081 flat I:-1/-1 V:95
0.000000081 flat I:-1/-1 V:3335
0.000000022 fix1 I:38/38 V:1790
0.000000023 fix1 I:-1/-1 V:95
0.000000024 fix1 I:-1/-1 V:3335
1.000009914 orig I:38/-1 V:1790 (TIME)
1.000009592 orig I:-1/-1 V:95 (TIME)
1.000012527 orig I:-1/-1 V:3335 (TIME)

dotest: count=76 lo=29 hi=3658
0.000000077 flat I:67/67 V:3384
0.000000084 flat I:-1/-1 V:28
0.000000090 flat I:-1/-1 V:3659
0.000000033 fix1 I:67/67 V:3384
0.000000016 fix1 I:-1/-1 V:28
0.000000024 fix1 I:-1/-1 V:3659
1.000013745 orig I:67/-1 V:3384 (TIME)
1.000009361 orig I:-1/-1 V:28 (TIME)
1.000115935 orig I:-1/-1 V:3659 (TIME)

dotest: count=79 lo=80 hi=3719
0.000000074 flat I:64/64 V:3195
0.000000087 flat I:-1/-1 V:79
0.000000093 flat I:-1/-1 V:3720
0.000000015 fix1 I:64/64 V:3195
0.000000016 fix1 I:-1/-1 V:79
0.000000024 fix1 I:-1/-1 V:3720
1.000015493 orig I:64/-1 V:3195 (TIME)
1.000012758 orig I:-1/-1 V:79 (TIME)
1.000011825 orig I:-1/-1 V:3720 (TIME)

dotest: count=82 lo=65 hi=4759
0.000000062 flat I:54/54 V:3385
0.000000095 flat I:-1/-1 V:64
0.000000094 flat I:-1/-1 V:4760
0.000000018 fix1 I:54/54 V:3385
0.000000016 fix1 I:-1/-1 V:64
0.000000017 fix1 I:-1/-1 V:4760
1.000010221 orig I:54/-1 V:3385 (TIME)
1.000013208 orig I:-1/-1 V:64 (TIME)
1.000012146 orig I:-1/-1 V:4760 (TIME)

dotest: count=85 lo=37 hi=4072
0.000000037 flat I:24/24 V:1160
0.000000098 flat I:-1/-1 V:36
0.000000097 flat I:-1/-1 V:4073
0.000000023 fix1 I:24/24 V:1160
0.000000023 fix1 I:-1/-1 V:36
0.000000024 fix1 I:-1/-1 V:4073
1.000009917 orig I:24/-1 V:1160 (TIME)
1.000010126 orig I:-1/-1 V:36 (TIME)
1.000009681 orig I:-1/-1 V:4073 (TIME)

dotest: count=88 lo=80 hi=4413
0.000000033 flat I:22/22 V:1009
0.000000100 flat I:-1/-1 V:79
0.000000100 flat I:-1/-1 V:4414
0.000000015 fix1 I:22/22 V:1009
0.000000017 fix1 I:-1/-1 V:79
0.000000024 fix1 I:-1/-1 V:4414
1.000009871 orig I:22/-1 V:1009 (TIME)
1.000009935 orig I:-1/-1 V:79 (TIME)
1.000014026 orig I:-1/-1 V:4414 (TIME)

dotest: count=91 lo=32 hi=4993
0.000000098 flat I:88/88 V:4857
0.000000103 flat I:-1/-1 V:31
0.000000102 flat I:-1/-1 V:4994
0.000000016 fix1 I:88/88 V:4857
0.000000017 fix1 I:-1/-1 V:31
0.000000018 fix1 I:-1/-1 V:4994
1.000012311 orig I:88/-1 V:4857 (TIME)
1.000011487 orig I:-1/-1 V:31 (TIME)
1.000011817 orig I:-1/-1 V:4994 (TIME)

dotest: count=94 lo=40 hi=4409
0.000000081 flat I:73/73 V:3272
0.000000105 flat I:-1/-1 V:39
0.000000111 flat I:-1/-1 V:4410
0.000000022 fix1 I:73/73 V:3272
0.000000023 fix1 I:-1/-1 V:39
0.000000023 fix1 I:-1/-1 V:4410
1.000009915 orig I:73/-1 V:3272 (TIME)
1.000009373 orig I:-1/-1 V:39 (TIME)
1.000009815 orig I:-1/-1 V:4410 (TIME)

dotest: count=97 lo=46 hi=4978
0.000000070 flat I:62/62 V:3483
0.000000108 flat I:-1/-1 V:45
0.000000107 flat I:-1/-1 V:4979
0.000000016 fix1 I:62/62 V:3483
0.000000016 fix1 I:-1/-1 V:45
0.000000018 fix1 I:-1/-1 V:4979
1.000013970 orig I:62/-1 V:3483 (TIME)
1.000012102 orig I:-1/-1 V:45 (TIME)
1.000013793 orig I:-1/-1 V:4979 (TIME)

dotest: count=100 lo=83 hi=4704
0.000000109 flat I:99/99 V:4704
0.000000117 flat I:-1/-1 V:82
0.000000111 flat I:-1/-1 V:4705
0.000000023 fix1 I:99/99 V:4704
0.000000016 fix1 I:-1/-1 V:82
0.000000024 fix1 I:-1/-1 V:4705
1.000009811 orig I:99/-1 V:4704 (TIME)
1.000009868 orig I:-1/-1 V:82 (TIME)
1.000009902 orig I:-1/-1 V:4705 (TIME)
  • Related