test: collect performance for esp-timer / spinlock
This commit is contained in:
parent
879160de8c
commit
0c40b2ec9d
2 changed files with 10 additions and 2 deletions
|
@ -9,6 +9,7 @@
|
||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "test_utils.h"
|
#include "test_utils.h"
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("esp_timer orders timers correctly", "[esp_timer]")
|
TEST_CASE("esp_timer orders timers correctly", "[esp_timer]")
|
||||||
{
|
{
|
||||||
void dummy_cb(void* arg)
|
void dummy_cb(void* arg)
|
||||||
|
@ -335,8 +336,7 @@ TEST_CASE("esp_timer_get_time call takes less than 1us", "[esp_timer]")
|
||||||
end = esp_timer_get_time();
|
end = esp_timer_get_time();
|
||||||
}
|
}
|
||||||
int ns_per_call = (int) ((end - begin) * 1000 / iter_count);
|
int ns_per_call = (int) ((end - begin) * 1000 / iter_count);
|
||||||
printf("esp_timer_get_time: %dns per call\n", ns_per_call);
|
TEST_PERFORMANCE_LESS_THAN(ESP_TIMER_GET_TIME_PER_CALL, "%dns", ns_per_call);
|
||||||
TEST_ASSERT(ns_per_call < 1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This test runs for about 10 minutes and is disabled in CI.
|
/* This test runs for about 10 minutes and is disabled in CI.
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
#include "soc/io_mux_reg.h"
|
#include "soc/io_mux_reg.h"
|
||||||
#include "soc/cpu.h"
|
#include "soc/cpu.h"
|
||||||
|
|
||||||
|
#include "idf_performance.h"
|
||||||
|
|
||||||
#define REPEAT_OPS 10000
|
#define REPEAT_OPS 10000
|
||||||
|
|
||||||
static uint32_t start, end;
|
static uint32_t start, end;
|
||||||
|
@ -42,6 +44,12 @@ TEST_CASE("portMUX spinlocks (no contention)", "[freertos]")
|
||||||
portEXIT_CRITICAL(&mux);
|
portEXIT_CRITICAL(&mux);
|
||||||
}
|
}
|
||||||
BENCHMARK_END("no contention lock");
|
BENCHMARK_END("no contention lock");
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_UNICORE
|
||||||
|
TEST_PERFORMANCE_LESS_THAN(FREERTOS_SPINLOCK_CYCLES_PER_OP_UNICORE, "%d cycles/op", ((end - start)/REPEAT_OPS));
|
||||||
|
#else
|
||||||
|
TEST_PERFORMANCE_LESS_THAN(FREERTOS_SPINLOCK_CYCLES_PER_OP, "%d cycles/op", ((end - start)/REPEAT_OPS));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("portMUX recursive locks (no contention)", "[freertos]")
|
TEST_CASE("portMUX recursive locks (no contention)", "[freertos]")
|
||||||
|
|
Loading…
Reference in a new issue