perf(array): optimize array push back function performance (#6431)
This commit is contained in:
@@ -143,7 +143,7 @@ lv_result_t lv_array_push_back(lv_array_t * array, const void * element)
|
||||
|
||||
if(array->size == array->capacity) {
|
||||
/*array is full*/
|
||||
lv_array_resize(array, array->capacity + 1);
|
||||
lv_array_resize(array, array->capacity + LV_ARRAY_DEFAULT_CAPACITY);
|
||||
}
|
||||
|
||||
uint8_t * data = array->data + array->size * array->element_size;
|
||||
|
||||
@@ -18,7 +18,10 @@ extern "C" {
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define LV_ARRAY_DEFAULT_CAPACITY 8
|
||||
|
||||
#ifndef LV_ARRAY_DEFAULT_CAPACITY
|
||||
#define LV_ARRAY_DEFAULT_CAPACITY 4
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
|
||||
@@ -40,7 +40,7 @@ void test_array_size(void)
|
||||
lv_array_push_back(&array, &i);
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL_UINT32(1, lv_array_is_full(&array) ? 1 : 0);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, lv_array_is_full(&array) ? 1 : 0);
|
||||
lv_array_clear(&array);
|
||||
TEST_ASSERT_EQUAL_UINT32(1, lv_array_is_empty(&array) ? 1 : 0);
|
||||
TEST_ASSERT_EQUAL_UINT32(0, lv_array_size(&array));
|
||||
@@ -57,7 +57,7 @@ void test_array_resize(void)
|
||||
TEST_ASSERT_EQUAL_UINT32(LV_ARRAY_DEFAULT_CAPACITY, lv_array_size(&array));
|
||||
TEST_ASSERT_EQUAL_UINT32(12, lv_array_capacity(&array));
|
||||
lv_array_resize(&array, 6);
|
||||
TEST_ASSERT_EQUAL_UINT32(6, lv_array_size(&array));
|
||||
TEST_ASSERT_EQUAL_UINT32(4, lv_array_size(&array));
|
||||
TEST_ASSERT_EQUAL_UINT32(6, lv_array_capacity(&array));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user