diff options
author | Nikita Popov <nikic@php.net> | 2016-02-22 18:40:45 +0100 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-02-22 19:40:32 +0100 |
commit | 2d1559f827477963a3f8a40af64212a409ba9457 (patch) | |
tree | 09e6c1e52186e40af57fff9f427df9c1d505b10f /ext/mysqlnd/mysqlnd_result.c | |
parent | 42fe5e6791bb0adca2b4bc0373007a9f776e3d8a (diff) | |
download | php-git-2d1559f827477963a3f8a40af64212a409ba9457.tar.gz |
Move free_chunk and resize_chunk into memory pool
Drops 24 bytes from each chunk. For the example in bug #71468 it
reduces memory usage by 30%.
Diffstat (limited to 'ext/mysqlnd/mysqlnd_result.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd_result.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index 2b709264a5..d649efcbb9 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -166,7 +166,8 @@ MYSQLND_METHOD(mysqlnd_result_unbuffered, free_last_data)(MYSQLND_RES_UNBUFFERED if (unbuf->last_row_buffer) { DBG_INF("Freeing last row buffer"); /* Nothing points to this buffer now, free it */ - unbuf->last_row_buffer->free_chunk(unbuf->last_row_buffer); + unbuf->result_set_memory_pool->free_chunk( + unbuf->result_set_memory_pool, unbuf->last_row_buffer); unbuf->last_row_buffer = NULL; } @@ -253,6 +254,7 @@ static void MYSQLND_METHOD(mysqlnd_result_buffered, free_result)(MYSQLND_RES_BUFFERED * const set) { int64_t row; + MYSQLND_MEMORY_POOL * pool; DBG_ENTER("mysqlnd_result_buffered::free_result"); DBG_INF_FMT("Freeing "MYSQLND_LLU_SPEC" row(s)", set->row_count); @@ -263,9 +265,10 @@ MYSQLND_METHOD(mysqlnd_result_buffered, free_result)(MYSQLND_RES_BUFFERED * cons MYSQLND_METHOD(mysqlnd_result_buffered_c, free_result)((MYSQLND_RES_BUFFERED_C *) set); } + pool = set->result_set_memory_pool; for (row = set->row_count - 1; row >= 0; row--) { MYSQLND_MEMORY_POOL_CHUNK *current_buffer = set->row_buffers[row]; - current_buffer->free_chunk(current_buffer); + pool->free_chunk(pool, current_buffer); } if (set->lengths) { |