From c18c466a9b533b438d1725a149e696e089b1b862 Mon Sep 17 00:00:00 2001 From: c9s Date: Tue, 10 Nov 2015 19:56:07 +0800 Subject: [PATCH] use 64 * 3 bytes instead of 220 bytes for combined pattern --- bench_str.csv | 2 ++ src/node.c | 18 ++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bench_str.csv b/bench_str.csv index d277fdb..331cb0e 100644 --- a/bench_str.csv +++ b/bench_str.csv @@ -623,3 +623,5 @@ 1447155699,13781189.15,5851252.25,62601.55,2539751.33 1447156053,13415522.24,5930072.07,82241.25,2533834.67 1447156073,13492327.24,5848589.68,52428.80,2567896.99 +1447156411,13229275.90,5858750.37,66576.25,2523350.73 +1447156432,13556025.90,5873947.56,62601.55,2487130.01 diff --git a/src/node.c b/src/node.c index 6db2064..43786b4 100644 --- a/src/node.c +++ b/src/node.c @@ -173,26 +173,24 @@ int r3_tree_compile(node *n, char **errstr) * Return 0 if success */ int r3_tree_compile_patterns(node * n, char **errstr) { - char * cpat; + edge * e = NULL; char * p; - - cpat = zcalloc(sizeof(char) * 220); // XXX + char * cpat = zcalloc(sizeof(char) * 64 * 3); // XXX if (!cpat) { asprintf(errstr, "Can not allocate memory"); return -1; } p = cpat; - - edge *e = NULL; - int opcode_cnt = 0; - for ( int i = 0 ; i < n->edge_len ; i++ ) { + int opcode_cnt = 0; + int i = 0; + for (; i < n->edge_len ; i++) { e = n->edges[i]; - - if ( e->opcode ) + if (e->opcode) { opcode_cnt++; + } - if ( e->has_slug ) { + if (e->has_slug) { // compile "foo/{slug}" to "foo/[^/]+" char * slug_pat = r3_slug_compile(e->pattern, e->pattern_len); strcat(p, slug_pat);