in reply to Re^6: Odometer pattern iterator (in C).
in thread Odometer pattern iterator (in C). (Updated.)

Slightly faster. It's getting too silly, though. However, the step function is getting smaller due to better understanding of the problem.

// inc_c - http://perlmonks.org/?node_id=1128230 // 8.52 secs. for 16/32 count=601080390 -O2 // 3.08 secs. for 16/32 count=601080390 -O3 #include <stdlib.h> #include <stdio.h> #define N 16 // number of elements wanted #define M 32 // place static int place[N+1]; static int count = 0; int step(void) { int *p = place; for(int i = 0; i < N; *p++ = i++ ) { if(*p < p[1] - 1) { ++*p; return 1; } } return 0; } int main(int argc, char **argv) { int i; int more = 1; for(i = 0; i < N; i++) place[i] = i; place[N] = M; while( more ) { //for(i = 0; i < N; i++) printf(" %d", place[i]); //putchar('\n'); count++; more = step(); } printf("\ncount %d\n", count); exit(0); }

Thanks for the opportunity to scrape some rust off my C skills :)

Replies are listed 'Best First'.
Re^8: Odometer pattern iterator (in C).
by BrowserUk (Patriarch) on May 30, 2015 at 08:13 UTC
    Slightly faster. It's getting too silly, though.

    Consistenly another 25% (5s v 6.5s). Indeed. your gains are now going to be constrained by the efficiency of the other code in the main loop that uses the generated indices.

    Thanks for the opportunity to scrape some rust off my C skills :)

    Thanks for taking that opportunity.

    The way you've folded the inner and outer loop (from the A::C version) together, makes the requirements of the algorithm far clearer, and as you said, that's key.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
    In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked
Re^8: Odometer pattern iterator (in C).
by tybalt89 (Monsignor) on Dec 30, 2016 at 21:50 UTC

    Posted before I joined. Adding for "Nodes You Wrote"