mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-06 23:39:31 +03:00
reduce page search to 8
This commit is contained in:
parent
cbc0e19809
commit
0316cb1d88
2 changed files with 6 additions and 6 deletions
|
@ -333,9 +333,9 @@ static void mi_page_queue_enqueue_from(mi_page_queue_t* to, mi_page_queue_t* fro
|
||||||
mi_page_queue_enqueue_from_ex(to, from, true, page);
|
mi_page_queue_enqueue_from_ex(to, from, true, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mi_page_queue_enqueue_from_at_start(mi_page_queue_t* to, mi_page_queue_t* from, mi_page_t* page) {
|
// static void mi_page_queue_enqueue_from_at_start(mi_page_queue_t* to, mi_page_queue_t* from, mi_page_t* page) {
|
||||||
mi_page_queue_enqueue_from_ex(to, from, false, page);
|
// mi_page_queue_enqueue_from_ex(to, from, false, page);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Only called from `mi_heap_absorb`.
|
// Only called from `mi_heap_absorb`.
|
||||||
size_t _mi_page_queue_append(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_queue_t* append) {
|
size_t _mi_page_queue_append(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_queue_t* append) {
|
||||||
|
|
|
@ -358,7 +358,7 @@ void _mi_page_unfull(mi_page_t* page) {
|
||||||
mi_page_queue_t* pq = mi_heap_page_queue_of(heap, page);
|
mi_page_queue_t* pq = mi_heap_page_queue_of(heap, page);
|
||||||
mi_page_set_in_full(page, true);
|
mi_page_set_in_full(page, true);
|
||||||
mi_page_queue_enqueue_from(pq, pqfull, page);
|
mi_page_queue_enqueue_from(pq, pqfull, page);
|
||||||
// we may instead insert at the front to increase reuse but it slows down some benchmarks like `alloc-test1`
|
// we could insert at the front to increase reuse, but it slows down certain benchmarks (like alloc-test)
|
||||||
// mi_page_queue_enqueue_from_at_start(pq, pqfull, page);
|
// mi_page_queue_enqueue_from_at_start(pq, pqfull, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +718,7 @@ static void mi_page_init(mi_heap_t* heap, mi_page_t* page, size_t block_size, mi
|
||||||
-------------------------------------------------------------*/
|
-------------------------------------------------------------*/
|
||||||
|
|
||||||
// search for a best next page to use for at most N pages (often cut short if immediate blocks are available)
|
// search for a best next page to use for at most N pages (often cut short if immediate blocks are available)
|
||||||
#define MI_MAX_CANDIDATE_SEARCH (16)
|
#define MI_MAX_CANDIDATE_SEARCH (8)
|
||||||
|
|
||||||
// is the page not yet used up to its reserved space?
|
// is the page not yet used up to its reserved space?
|
||||||
static bool mi_page_is_expandable(const mi_page_t* page) {
|
static bool mi_page_is_expandable(const mi_page_t* page) {
|
||||||
|
@ -768,7 +768,7 @@ static mi_page_t* mi_page_queue_find_free_ex(mi_heap_t* heap, mi_page_queue_t* p
|
||||||
page_candidate = page;
|
page_candidate = page;
|
||||||
candidate_count = 0;
|
candidate_count = 0;
|
||||||
}
|
}
|
||||||
else if (!mi_page_is_expandable(page) && page->used > page_candidate->used) {
|
else if (!mi_page_is_expandable(page) && page->capacity < page_candidate->capacity) {
|
||||||
page_candidate = page;
|
page_candidate = page;
|
||||||
}
|
}
|
||||||
// if we find a non-expandable candidate, or searched for N pages, return with the best candidate
|
// if we find a non-expandable candidate, or searched for N pages, return with the best candidate
|
||||||
|
|
Loading…
Add table
Reference in a new issue