Skip to content

Commit c251d9e

Browse files
committed
improve perf and readbility
1 parent f798ccb commit c251d9e

1 file changed

Lines changed: 20 additions & 11 deletions

File tree

src/iceberg/util/transform_util.cc

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
namespace iceberg {
2626

2727
namespace {
28-
const auto kEpochDate = std::chrono::year{1970} / std::chrono::January / 1;
29-
constexpr int64_t kMicrosPerMillis = 1000;
30-
constexpr int64_t kMicrosPerSecond = 1000000;
28+
constexpr auto kEpochDate = std::chrono::year{1970} / std::chrono::January / 1;
29+
constexpr int64_t kMicrosPerMillis = 1'000;
30+
constexpr int64_t kMicrosPerSecond = 1'000'000;
3131
} // namespace
3232

3333
std::string TransformUtil::HumanYear(int32_t year_ordinal) {
@@ -93,40 +93,49 @@ std::string TransformUtil::HumanTimestampWithZone(int64_t timestamp_micros) {
9393
}
9494

9595
std::string TransformUtil::Base64Encode(std::string_view str_to_encode) {
96-
static const std::string base64_chars =
96+
static constexpr std::string_view kBase64Chars =
9797
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
9898
int32_t i = 0;
9999
int32_t j = 0;
100-
std::array<char, 3> char_array_3;
101-
std::array<char, 4> char_array_4;
100+
std::array<unsigned char, 3> char_array_3;
101+
std::array<unsigned char, 4> char_array_4;
102102

103103
std::string encoded;
104104
encoded.reserve((str_to_encode.size() + 2) * 4 / 3);
105105

106-
for (char byte : str_to_encode) {
106+
for (unsigned char byte : str_to_encode) {
107107
char_array_3[i++] = byte;
108108
if (i == 3) {
109109
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
110110
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
111111
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
112112
char_array_4[3] = char_array_3[2] & 0x3f;
113113

114-
for (j = 0; j < 4; j++) encoded += base64_chars[char_array_4[j]];
114+
for (j = 0; j < 4; j++) {
115+
encoded += kBase64Chars[char_array_4[j]];
116+
}
117+
115118
i = 0;
116119
}
117120
}
118121

119122
if (i) {
120-
for (j = i; j < 3; j++) char_array_3[j] = '\0';
123+
for (j = i; j < 3; j++) {
124+
char_array_3[j] = '\0';
125+
}
121126

122127
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
123128
char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
124129
char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
125130
char_array_4[3] = char_array_3[2] & 0x3f;
126131

127-
for (j = 0; j < i + 1; j++) encoded += base64_chars[char_array_4[j]];
132+
for (j = 0; j < i + 1; j++) {
133+
encoded += kBase64Chars[char_array_4[j]];
134+
}
128135

129-
while (i++ < 3) encoded += '=';
136+
while (i++ < 3) {
137+
encoded += '=';
138+
}
130139
}
131140

132141
return encoded;

0 commit comments

Comments
 (0)