Skip to content

Commit ed26d04

Browse files
committed
[Common] group digits when printing ns in latency tracker
1 parent 7a99839 commit ed26d04

File tree

4 files changed

+62
-8
lines changed

4 files changed

+62
-8
lines changed

source/common/latency_tracker.hpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,16 @@ class latency_printer {
9494

9595
for (auto &[name, histogram] : values) {
9696
auto value = getValues(histogram.get());
97-
logger.log(logger::Level::INFO,
98-
"{},{},{},{},{},{},{},{},{},{},{},{},{},{},ns", name,
99-
value.mean, value.percentileValues[0],
100-
value.percentileValues[1], value.percentileValues[2],
101-
value.percentileValues[3], value.percentileValues[4],
102-
value.percentileValues[5], value.percentileValues[6],
103-
value.count, value.count * value.mean, value.min,
104-
value.max, value.stddev);
97+
auto f = groupDigits<int64_t>;
98+
logger.log(
99+
logger::Level::INFO,
100+
"{},{},{},{},{},{},{},{},{},{},{},{},{},{},ns", name,
101+
f(value.mean), f(value.percentileValues[0]),
102+
f(value.percentileValues[1]), f(value.percentileValues[2]),
103+
f(value.percentileValues[3]), f(value.percentileValues[4]),
104+
f(value.percentileValues[5]), f(value.percentileValues[6]),
105+
f(value.count), f(value.count * value.mean), f(value.min),
106+
f(value.max), value.stddev);
105107
}
106108
}
107109

source/common/ur_util.hpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,25 @@ template <typename T> class AtomicSingleton {
478478
}
479479
};
480480

481+
template <typename Numeric>
482+
static inline std::string groupDigits(Numeric numeric) {
483+
auto number = std::to_string(numeric);
484+
std::string sign = numeric >= 0 ? "" : "-";
485+
auto digits = number.substr(sign.size(), number.size() - sign.size());
486+
487+
std::string separated;
488+
489+
for (size_t i = 0; i < digits.size(); i++) {
490+
separated.push_back(digits[i]);
491+
492+
if (i != digits.size() - 1 && (digits.size() - i - 1) % 3 == 0) {
493+
separated.push_back('\'');
494+
}
495+
}
496+
497+
return sign + separated;
498+
}
499+
481500
template <typename T> Spinlock<Rc<T>> AtomicSingleton<T>::instance;
482501

483502
#endif /* UR_UTIL_H */

test/unit/utils/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ add_unit_test(params
1313

1414
add_unit_test(print
1515
print.cpp)
16+
17+
add_unit_test(helpers
18+
helpers.cpp)

test/unit/utils/helpers.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright (C) 2024 Intel Corporation
2+
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
3+
// See LICENSE.TXT
4+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
6+
#include <gmock/gmock.h>
7+
#include <gtest/gtest.h>
8+
9+
#include "ur_util.hpp"
10+
11+
TEST(groupDigits, Success) {
12+
EXPECT_EQ(groupDigits(-1), "-1");
13+
EXPECT_EQ(groupDigits(-12), "-12");
14+
EXPECT_EQ(groupDigits(-123), "-123");
15+
EXPECT_EQ(groupDigits(-1234), "-1'234");
16+
EXPECT_EQ(groupDigits(-12345), "-12'345");
17+
EXPECT_EQ(groupDigits(-123456), "-123'456");
18+
EXPECT_EQ(groupDigits(-1234567), "-1'234'567");
19+
EXPECT_EQ(groupDigits(-12345678), "-12'345'678");
20+
21+
EXPECT_EQ(groupDigits(0), "0");
22+
EXPECT_EQ(groupDigits(1), "1");
23+
EXPECT_EQ(groupDigits(12), "12");
24+
EXPECT_EQ(groupDigits(123), "123");
25+
EXPECT_EQ(groupDigits(1234), "1'234");
26+
EXPECT_EQ(groupDigits(12345), "12'345");
27+
EXPECT_EQ(groupDigits(123456), "123'456");
28+
EXPECT_EQ(groupDigits(1234567), "1'234'567");
29+
EXPECT_EQ(groupDigits(12345678), "12'345'678");
30+
}

0 commit comments

Comments
 (0)