mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
drm/amd/display: Optimize remove_duplicates() from O(N^2) to O(N)
Replace the previous O(N^2) implementation of remove_duplicates() with a O(N) version using a fast/slow pointer approach. The new version keeps only the first occurrence of each element and compacts the array in place, improving efficiency without changing functionality. Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
51cb93aa0c
commit
43f06e8165
|
|
@ -48,18 +48,19 @@ static void set_reserved_time_on_all_planes_with_stream_index(struct display_con
|
|||
|
||||
static void remove_duplicates(double *list_a, int *list_a_size)
|
||||
{
|
||||
int cur_element = 0;
|
||||
// For all elements b[i] in list_b[]
|
||||
while (cur_element < *list_a_size - 1) {
|
||||
if (list_a[cur_element] == list_a[cur_element + 1]) {
|
||||
for (int j = cur_element + 1; j < *list_a_size - 1; j++) {
|
||||
list_a[j] = list_a[j + 1];
|
||||
}
|
||||
*list_a_size = *list_a_size - 1;
|
||||
} else {
|
||||
cur_element++;
|
||||
int j = 0;
|
||||
|
||||
if (*list_a_size == 0)
|
||||
return;
|
||||
|
||||
for (int i = 1; i < *list_a_size; i++) {
|
||||
if (list_a[j] != list_a[i]) {
|
||||
j++;
|
||||
list_a[j] = list_a[i];
|
||||
}
|
||||
}
|
||||
|
||||
*list_a_size = j + 1;
|
||||
}
|
||||
|
||||
static bool increase_mpc_combine_factor(unsigned int *mpc_combine_factor, unsigned int limit)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user