perf(array): optimize array push back function performance (#6431)

This commit is contained in:
Zhang Ji Peng
2024-07-11 15:54:41 +08:00
committed by GitHub
parent 730a3bd76f
commit 3d32aa9791
3 changed files with 7 additions and 4 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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));
}