lib min_heap: optimize number of calls to min_heapify()
authorKuan-Wei Chiu <visitorckw@gmail.com>
Wed, 10 Jan 2024 08:12:12 +0000 (16:12 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 22 Feb 2024 23:38:51 +0000 (15:38 -0800)
Patch series "lib min_heap: Min heap optimizations".

The purpose of this patch series is to enhance the existing min heap
implementation.  The optimization focuses on both the heap construction
process and the number of comparisons made during the heapify operation.

This patch (of 2):

Improve the heap construction process by reducing unnecessary heapify
operations.  Specifically, adjust the starting condition from n / 2 to n /
2 - 1 in the loop that iterates over all non-leaf elements.

Link: https://lkml.kernel.org/r/20240110081213.2289636-1-visitorckw@gmail.com
Link: https://lkml.kernel.org/r/20240110081213.2289636-2-visitorckw@gmail.com
Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/min_heap.h

index 44077837385f89090c457472fa1d43fcd1a7cb16..18a581310eb3507778a48a6056c303a641d77b10 100644 (file)
@@ -70,7 +70,7 @@ void min_heapify_all(struct min_heap *heap,
 {
        int i;
 
-       for (i = heap->nr / 2; i >= 0; i--)
+       for (i = heap->nr / 2 - 1; i >= 0; i--)
                min_heapify(heap, i, func);
 }