There is an opportunity for a minor speedup in sqlite3Malloc().
sqlite3Malloc() is implemented as follows:
void *sqlite3Malloc(int n){ void *p; if( (p = malloc(n))==0 ){ if( n>0 ) sqlite3_malloc_failed++; }else{ memset(p, 0, n); } return p; }
The separation of the malloc() from the memset() is potentially ineffecient. If available, sqlite3Malloc() should use calloc() instead. Specifically:
void *sqlite3Malloc(int n){ void *p; if( (p = calloc(n, 1))==0 ){ if( n>0 ) sqlite3_malloc_failed++; } return p; }
Better yet, why zero the memory at all?