csv-read performance iterate

This commit is contained in:
John Kerl 2015-12-10 21:36:11 -05:00
parent 07b18fd9e5
commit bcf2189262
3 changed files with 19 additions and 7 deletions

View file

@ -329,21 +329,25 @@ static int lrec_reader_stdio_csv_get_fields(lrec_reader_stdio_csv_state_t* pstat
}
// ----------------------------------------------------------------
static lrec_t* paste_indices_and_data(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pdata_fields, context_t* pctx) {
static lrec_t* paste_indices_and_data(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pdata_fields,
context_t* pctx)
{
int idx = 0;
lrec_t* prec = lrec_unbacked_alloc();
for (rsllse_t* pd = pdata_fields->phead; pd != NULL; pd = pd->pnext) {
char free_flags = pd->free_flag;
idx++;
char* key = make_nidx_key(idx, &free_flags);
lrec_put(prec, key, mlr_strdup_or_die(pd->value), free_flags);
lrec_put(prec, key, pd->value, free_flags);
pd->free_flag = 0;
}
return prec;
}
// ----------------------------------------------------------------
static lrec_t* paste_header_and_data(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pdata_fields, context_t* pctx) {
static lrec_t* paste_header_and_data(lrec_reader_stdio_csv_state_t* pstate, rslls_t* pdata_fields,
context_t* pctx)
{
if (pstate->pheader_keeper->pkeys->length != pdata_fields->length) {
fprintf(stderr, "%s: Header/data length mismatch (%d != %d) at file \"%s\" line %lld.\n",
MLR_GLOBALS.argv0, pstate->pheader_keeper->pkeys->length, pdata_fields->length,
@ -354,7 +358,7 @@ static lrec_t* paste_header_and_data(lrec_reader_stdio_csv_state_t* pstate, rsll
sllse_t* ph = pstate->pheader_keeper->pkeys->phead;
rsllse_t* pd = pdata_fields->phead;
for ( ; ph != NULL && pd != NULL; ph = ph->pnext, pd = pd->pnext) {
lrec_put(prec, ph->value, mlr_strdup_or_die(pd->value), pd->free_flag);
lrec_put(prec, ph->value, pd->value, pd->free_flag);
pd->free_flag = 0;
}
return prec;

View file

@ -62,7 +62,9 @@ void* mlr_malloc_or_die(size_t size) {
fprintf(stderr, "malloc(%lu) failed.\n", (unsigned long)size);
exit(1);
}
//fprintf(stderr, "MALLOC size=%d,p=%p\n", (int)size, p);
#ifdef MLR_MALLOC_TRACE
fprintf(stderr, "MALLOC size=%d,p=%p\n", (int)size, p);
#endif
return p;
}
@ -73,7 +75,9 @@ void* mlr_realloc_or_die(void *optr, size_t size) {
fprintf(stderr, "realloc(%lu) failed.\n", (unsigned long)size);
exit(1);
}
//fprintf(stderr, "REALLOC size=%d,p=%p\n", (int)size, nptr);
#ifdef MLR_MALLOC_TRACE
fprintf(stderr, "REALLOC size=%d,p=%p\n", (int)size, nptr);
#endif
return nptr;
}

View file

@ -12,6 +12,8 @@
#define FALSE 0
#define NEITHER_TRUE_NOR_FALSE -1
//#define MLR_MALLOC_TRACE
// ----------------------------------------------------------------
//int mlr_canonical_mod(int a, int n);
static inline int mlr_canonical_mod(int a, int n) {
@ -76,7 +78,9 @@ static inline char * mlr_strdup_or_die(const char *s1) {
fprintf(stderr, "malloc/strdup failed\n");
exit(1);
}
//fprintf(stderr, "STRDUP size=%d,p=%p\n", (int)strlen(s2), s2);
#ifdef MLR_MALLOC_TRACE
fprintf(stderr, "STRDUP size=%d,p=%p\n", (int)strlen(s2), s2);
#endif
return s2;
}