Skip to content

Commit c1f6588

Browse files
committed
Tests/AK: Add perf tests for tan(0, asin(), acos(), atan()
On my system, with macOS system libm (including the existing sin(), cos() perf tests): % Build/lagom/bin/TestAKMath ... Running benchmark 'bench_trig_cos'. Completed benchmark 'bench_trig_cos' in 66ms Running benchmark 'bench_trig_cosf'. Completed benchmark 'bench_trig_cosf' in 58ms Running benchmark 'bench_trig_sin'. Completed benchmark 'bench_trig_sin' in 54ms Running benchmark 'bench_trig_sinf'. Completed benchmark 'bench_trig_sinf' in 58ms Running benchmark 'bench_trig_tan'. Completed benchmark 'bench_trig_tan' in 75ms Running benchmark 'bench_trig_tanf'. Completed benchmark 'bench_trig_tanf' in 82ms Running benchmark 'bench_trig_acos'. Completed benchmark 'bench_trig_acos' in 11ms Running benchmark 'bench_trig_acosf'. Completed benchmark 'bench_trig_acosf' in 10ms Running benchmark 'bench_trig_asin'. Completed benchmark 'bench_trig_asin' in 11ms Running benchmark 'bench_trig_asinf'. Completed benchmark 'bench_trig_asinf' in 11ms Running benchmark 'bench_trig_atan'. Completed benchmark 'bench_trig_atan' in 60ms Running benchmark 'bench_trig_atanf'. Completed benchmark 'bench_trig_atanf' in 63ms With serenity libm (#26662): % Build/lagom/bin/TestAKMath ... Completed benchmark 'bench_trig_cos' in 87ms Running benchmark 'bench_trig_cosf'. Completed benchmark 'bench_trig_cosf' in 65ms Running benchmark 'bench_trig_sin'. Completed benchmark 'bench_trig_sin' in 75ms Running benchmark 'bench_trig_sinf'. Completed benchmark 'bench_trig_sinf' in 67ms Running benchmark 'bench_trig_tan'. Completed benchmark 'bench_trig_tan' in 184ms Running benchmark 'bench_trig_tanf'. Completed benchmark 'bench_trig_tanf' in 163ms Running benchmark 'bench_trig_acos'. Completed benchmark 'bench_trig_acos' in 10ms Running benchmark 'bench_trig_acosf'. Completed benchmark 'bench_trig_acosf' in 10ms Running benchmark 'bench_trig_asin'. Completed benchmark 'bench_trig_asin' in 10ms Running benchmark 'bench_trig_asinf'. Completed benchmark 'bench_trig_asinf' in 10ms Running benchmark 'bench_trig_atan'. Completed benchmark 'bench_trig_atan' in 176ms Running benchmark 'bench_trig_atanf'. Completed benchmark 'bench_trig_atanf' in 184ms
1 parent 8fd8c2f commit c1f6588

1 file changed

Lines changed: 50 additions & 10 deletions

File tree

Tests/AK/TestAKMath.cpp

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,70 @@ TEST_CASE(wrap_to_range)
4646
EXPECT_EQ(AK::wrap_to_range(-85., 180.), -85.);
4747
}
4848

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-
} \
49+
#define BENCHMARK_TRIG(type, function, from, to) \
50+
do { \
51+
for (type value = from; value < to; value += static_cast<type>(0.000001)) { \
52+
auto result = function(value); \
53+
AK::taint_for_optimizer(result); \
54+
} \
5555
} while (false)
5656

5757
BENCHMARK_CASE(bench_trig_cos)
5858
{
59-
BENCHMARK_TRIG(double, AK::cos);
59+
BENCHMARK_TRIG(double, AK::cos, -4 * AK::Pi<double>, 4 * AK::Pi<double>);
6060
}
6161

6262
BENCHMARK_CASE(bench_trig_cosf)
6363
{
64-
BENCHMARK_TRIG(float, AK::cos);
64+
BENCHMARK_TRIG(float, AK::cos, -4 * AK::Pi<float>, 4 * AK::Pi<float>);
6565
}
6666

6767
BENCHMARK_CASE(bench_trig_sin)
6868
{
69-
BENCHMARK_TRIG(double, AK::sin);
69+
BENCHMARK_TRIG(double, AK::sin, -4 * AK::Pi<double>, 4 * AK::Pi<double>);
7070
}
7171

7272
BENCHMARK_CASE(bench_trig_sinf)
7373
{
74-
BENCHMARK_TRIG(float, AK::sin);
74+
BENCHMARK_TRIG(float, AK::sin, -4 * AK::Pi<float>, 4 * AK::Pi<float>);
75+
}
76+
77+
BENCHMARK_CASE(bench_trig_tan)
78+
{
79+
BENCHMARK_TRIG(double, AK::tan, -4 * AK::Pi<double>, 4 * AK::Pi<double>);
80+
}
81+
82+
BENCHMARK_CASE(bench_trig_tanf)
83+
{
84+
BENCHMARK_TRIG(float, AK::tan, -4 * AK::Pi<float>, 4 * AK::Pi<float>);
85+
}
86+
87+
BENCHMARK_CASE(bench_trig_acos)
88+
{
89+
BENCHMARK_TRIG(double, AK::acos, -1.0, 1.0);
90+
}
91+
92+
BENCHMARK_CASE(bench_trig_acosf)
93+
{
94+
BENCHMARK_TRIG(float, AK::acos, -1.0f, 1.0f);
95+
}
96+
97+
BENCHMARK_CASE(bench_trig_asin)
98+
{
99+
BENCHMARK_TRIG(double, AK::asin, -1.0, 1.0);
100+
}
101+
102+
BENCHMARK_CASE(bench_trig_asinf)
103+
{
104+
BENCHMARK_TRIG(float, AK::asin, -1.0f, 1.0f);
105+
}
106+
107+
BENCHMARK_CASE(bench_trig_atan)
108+
{
109+
BENCHMARK_TRIG(double, AK::atan, -4 * AK::Pi<double>, 4 * AK::Pi<double>);
110+
}
111+
112+
BENCHMARK_CASE(bench_trig_atanf)
113+
{
114+
BENCHMARK_TRIG(float, AK::atan, -4 * AK::Pi<float>, 4 * AK::Pi<float>);
75115
}

0 commit comments

Comments
 (0)