Skip to content

Commit 91edccb

Browse files
committed
Tests: Add perf tests for sin(), cos()
On my system, with macOS system libm: Running benchmark 'bench_trig_cos'. Completed benchmark 'bench_trig_cos' in 68ms Running benchmark 'bench_trig_cosf'. Completed benchmark 'bench_trig_cosf' in 56ms Running benchmark 'bench_trig_sin'. Completed benchmark 'bench_trig_sin' in 52ms Running benchmark 'bench_trig_sinf'. Completed benchmark 'bench_trig_sinf' in 56ms With serenity libm (SerenityOS#26662): Running benchmark 'bench_trig_cos'. Completed benchmark 'bench_trig_cos' in 171ms Running benchmark 'bench_trig_cosf'. Completed benchmark 'bench_trig_cosf' in 146ms Running benchmark 'bench_trig_sin'. Completed benchmark 'bench_trig_sin' in 153ms Running benchmark 'bench_trig_sinf'. Completed benchmark 'bench_trig_sinf' in 156ms
1 parent bdfa78e commit 91edccb

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

Tests/AK/TestAKMath.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,31 @@ TEST_CASE(wrap_to_range)
4545
EXPECT_EQ(AK::wrap_to_range(0., 180.), 0.);
4646
EXPECT_EQ(AK::wrap_to_range(-85., 180.), -85.);
4747
}
48+
49+
#define BENCHMARK_TRIG(type, function) \
50+
do { \
51+
for (type value = -4 * AK::Pi<type>; value < 4 * AK::Pi<type>; value += static_cast<type>(0.000001)) { \
52+
auto result = function(value); \
53+
AK::taint_for_optimizer(result); \
54+
} \
55+
} while (false)
56+
57+
BENCHMARK_CASE(bench_trig_cos)
58+
{
59+
BENCHMARK_TRIG(double, AK::cos);
60+
}
61+
62+
BENCHMARK_CASE(bench_trig_cosf)
63+
{
64+
BENCHMARK_TRIG(float, AK::cos);
65+
}
66+
67+
BENCHMARK_CASE(bench_trig_sin)
68+
{
69+
BENCHMARK_TRIG(double, AK::sin);
70+
}
71+
72+
BENCHMARK_CASE(bench_trig_sinf)
73+
{
74+
BENCHMARK_TRIG(float, AK::sin);
75+
}

0 commit comments

Comments
 (0)