Comparison of Power Consumption between PPI and APP_TIMER

I am working on a SAADC project using SDK 15.3 & nRF52832, and I learned from the forum that using PPI can allow the CPU to be in an IDLE state while still measuring the ADC, theoretically saving power. I compared two projects: one using APP_TIMER and the other using PPI with nrf_drv_timer.

However, I found that the power consumption of nrf_drv_timer itself is higher than that of APP_TIMER, which contradicts the concept of using PPI to save power. Is this really the case, or am I doing something wrong?

Here is my function code for reference:
1. APP_timer:

static void BLE_ctrl(void* p_context){adc_action=true;}

APP_ERROR_CHECK(app_timer_create(&ADC_timer, APP_TIMER_MODE_REPEATED, ADC_ctrl));
APP_ERROR_CHECK(app_timer_start(ADC_timer, APP_TIMER_TICKS(detect_duration), NULL));
while(1){
    do
    {
        idle_state_handle();
    } while (!adc_action);
    for(int i=0;i<SAMPLES_IN_BUFFER;i++){
        APP_ERROR_CHECK(nrf_drv_saadc_sample());
    }
}

2. ppi with nrf_drv_timer:

static void timer_handler(nrf_timer_event_t event_type, void* p_context)
{}
static void saadc_sampling_event_init(uint16_t time)
{
    ret_code_t err_code;

    // err_code = nrf_drv_ppi_init();
    // APP_ERROR_CHECK(err_code);

    nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
    timer_cfg.bit_width              = NRF_TIMER_BIT_WIDTH_32;
    err_code                         = nrf_drv_timer_init(&m_timer, &timer_cfg, timer_handler);
    APP_ERROR_CHECK(err_code);

    /* setup m_timer for compare event every 400ms */
    uint32_t ticks = nrf_drv_timer_ms_to_ticks(&m_timer, detect_duration);
    nrf_drv_timer_extended_compare(&m_timer, NRF_TIMER_CC_CHANNEL3, ticks,
                                   NRF_TIMER_SHORT_COMPARE3_CLEAR_MASK, true);
    nrf_drv_timer_enable(&m_timer);

    uint32_t timer_compare_event_addr =
        nrf_drv_timer_compare_event_address_get(&m_timer, NRF_TIMER_CC_CHANNEL3);
    uint32_t saadc_sample_task_addr = nrf_drv_saadc_sample_task_get();

    /* setup ppi channel so that timer compare event is triggering sample task in SAADC */
    err_code = nrf_drv_ppi_channel_alloc(&m_ppi_channel);
    APP_ERROR_CHECK(err_code);

    err_code =
        nrf_drv_ppi_channel_assign(m_ppi_channel, timer_compare_event_addr, saadc_sample_task_addr);
    APP_ERROR_CHECK(err_code);
}
// main loop
while(1){
    idle_state_handle();
}

Here is the measurement chart(using PPK2):
Related