Skip to content

Commit 279491f

Browse files
committed
Use vector instead
1 parent ff0af6f commit 279491f

File tree

1 file changed

+18
-28
lines changed

1 file changed

+18
-28
lines changed

wpimath/src/test/native/cpp/TimeTest.cpp

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <chrono>
77
#include <cstddef>
88
#include <cstdio>
9+
#include <vector>
910

1011
#include <gtest/gtest.h>
1112
#include <wpi/array.h>
@@ -55,7 +56,7 @@ struct fmt::formatter<wpi::array<T, N>, CharT> {
5556
};
5657

5758
template <size_t N>
58-
void ProcessDurations(const wpi::array<units::nanosecond_t, N>& durations,
59+
void ProcessDurations(const std::vector<units::nanosecond_t>& durations,
5960
std::string_view prefix = "") {
6061
wpi::print("Summing durations\n");
6162
std::fflush(stdout);
@@ -94,14 +95,28 @@ void ProcessDurations(const wpi::array<units::nanosecond_t, N>& durations,
9495
}
9596

9697
wpi::print("{}Last 10: {}\n", prefix, buffer);
97-
std::fflush(stdout);
98+
99+
std::vector<units::nanosecond_t> sorted{durations};
100+
std::sort(sorted.begin(), sorted.end());
101+
102+
for (size_t i = 0; i < 10; ++i) {
103+
buffer[i] = sorted[i];
104+
}
105+
106+
wpi::print("{}Fastest 10: {}\n", prefix, buffer);
107+
108+
for (size_t i = 0; i < 10; ++i) {
109+
buffer[i] = sorted[N - 10 + i];
110+
}
111+
112+
wpi::print("{}Slowest 10: {}\n", prefix, buffer);
98113
}
99114

100115
template <size_t N>
101116
void Time(
102117
std::function<void()> action, std::function<void()> setup = [] {},
103118
std::string_view prefix = "") {
104-
wpi::array<units::nanosecond_t, N> durations(wpi::empty_array);
119+
std::vector<units::nanosecond_t> durations{N};
105120

106121
for (size_t i = 0; i < N; ++i) {
107122
setup();
@@ -130,32 +145,7 @@ void TimeSuite(
130145
}
131146
}
132147

133-
template <size_t N>
134-
void TestArray() {
135-
fmt::print("TestArray: N = {}\n", N);
136-
std::fflush(stdout);
137-
wpi::array<units::nanosecond_t, N> array_a(wpi::empty_array);
138-
for (size_t i = 0; i < N; ++i) {
139-
array_a[i] = 0_ns;
140-
}
141-
142-
[[ maybe_unused ]] std::array<units::nanosecond_t, N> array_b{array_a};
143-
144-
wpi::print("{}\n", array_b[0]);
145-
}
146-
147148
TEST(TimeTest, Time) {
148-
fmt::print("Testing 2**10 + 1\n");
149-
std::fflush(stdout);
150-
TestArray<(1 << 10) + 1>();
151-
152-
fmt::print("Testing 2**12 + 1\n");
153-
std::fflush(stdout);
154-
TestArray<(1 << 12) + 1>();
155-
156-
fmt::print("Testing 2**16 + 1\n");
157-
std::fflush(stdout);
158-
TestArray<(1 << 16) + 1>();
159149
{
160150
frc::DifferentialDriveOdometry odometry{frc::Rotation2d{}, 0_m, 0_m,
161151
frc::Pose2d{}};

0 commit comments

Comments
 (0)