hi,

i am evaluating sqlite performance for mobile platform now.

i found something discussable about memory footprint and leakage.

the highest water line of memeory usage is 44611bytes (by malloc() ), and
there seems a large memory leakage (34017bytes) in my testing scenario.
'cache_size' is set to the smallest, '1', but i dont know why it still use
so much. for low-profile mobile platforms, such amount seems too much.

can somebody tell me something about this?


-----the way i measure the memroy usage----
in os_common.h

sqlite3GenericMalloc(int n){
 char *p = (char *)malloc(n+8);
 ...
 ...
 if( p ){
   *(int *)p = n;
 }
 currentMemoryConsumption += n;
 if (currentMemoryConsumption > maxMemoryConsuption)
 {
   maxMemoryConsuption = currentMemoryConsumption;
 }
 return (void *)p;
}

void sqlite3GenericFree(void *p){
 assert(p);
 currentMemoryConsumption -= *((int*) ((char*)p - 8));
 ...
 ...
}

--------------------------testing
scenario--------------------------------------
the testing is done with windows filesystem,
cache_size=1; page_size = 1k (default),

the database being operated on contains 250 enties, no index:

contacts.db size: 7,168 bytes

CREATE TABLE contacts (name text,phone int);
A.H.|1439
Abel|1654
Absalonsgade,|1658
...
...

the queries are:
select number from contacts where rowid = 1
select number from contacts where rowid = 125
select number from contacts where rowid = 64
INSERT INTO contacts values('kim','0000')
INSERT INTO contacts values('wang','0000')
update contacts set phone='34' where name = 'kim'
update contacts set phone='71' where name = 'wang'
update contacts set phone='0000' where name = 'Eskildsgade,'
update contacts set phone='0000' where name = 'Bustrupgade,'
begin
INSERT INTO contacts VALUES('abc','49')
INSERT INTO contacts VALUES('klaus','41')
update contacts set phone='1657' where name = 'Eskildsgade,'
update contacts set phone='1737' where name = 'Bustrupgade,'
delete from contacts where name = 'abc'
delete from contacts where name = 'klaus'
commit
delete from contacts where name = 'kim'
delete from contacts WHERE name = 'wang'
delete from contacts where name = 'Eskildsgade,'
delete from contacts WHERE name = 'Bustrupgade,'

Reply via email to