Hi,
Windows malloc is slow. There is nothing you can do about it.
I have seen huge difference in the same code running on Linux vs Windows 
(Code
which mostly do malloc/realloc/free).
I am using google perftools (http://code.google.com/p/google-perftools/) 
to accelerate malloc.
Actually, I am using a patched version which have debug malloc working 
on win32 too (In addition to being faster) -
see details here 
http://code.google.com/p/google-perftools/issues/detail?id=284

Yoni.

On 17/12/2010 6:29 PM, Richard Hipp wrote:
> An SQLite user has brought to our attention a performance issue in SQLite
> that seems to be associated with malloc().  If you have  insights or
> corroborating experience with this issue please let me know.
>
> SQLite supports a "zero-malloc option" (see
> http://www.sqlite.org/malloc.html#memsys5 for details) which uses its own
> internal memory allocator rather than system malloc().  Earlier today, we
> patched the command-line shell to allow the zero-malloc option to be turned
> on.  If you do:
>
>       sqlite3 DATABASE
>
> then the regular system memory allocator is used, but if you say:
>
>       sqlite3 -heap 100M DATABASE
>
> then the MEMSYS5 memory allocator will be used with a pool of 100MB of
> memory to work with.  (You can adjust the size of your memory pool for
> whatever you need.)
>
> There are win32 and win64 builds of this updated command-line shell compiled
> using vs2010 here:
>
>       http://www.sqlite.org/draft/download.html
>
> For certain full-text search queries against a large database, we are seeing
> speeds which are 3x faster when using "-heap 300M" (the memsys5 memory
> allocator) versus omitting the -heap option and thus using system malloc().
> This is on windows7.  Similar results are seen with both gcc and vs2010
> builds.
>
> If you have any large queries that you can run on windows using the
> command-line shell, I would appreciate you timing those queries using the
> new shells from the download page, both with "-heap 300M" and without it,
> and letting me know about any performance differences you see.
>
> I also observe that compiling for 64-bit using vs2010 (not an option with my
> ancient version 2.95.3 gcc cross-compiler) that the queries are an
> additional 2x faster.  I was surprised at the dramatic performance increase
> in going from 32-bit to 64-bit.  Is such a speed-up typical?
>
> The use of "-heap 300M" seems to not make any performance difference on
> Linux.
>
> Any insights into why this is, what we are doing wrong, or what we can do to
> improve the performance of malloc() on windows will be appreciated.
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to