Skip to content

Commit 0692429

Browse files
committed
optimize uuid
1 parent d7f0b4b commit 0692429

File tree

1 file changed

+60
-10
lines changed

1 file changed

+60
-10
lines changed

src/tbox/hash/uuid.c

Lines changed: 60 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,65 @@ tb_char_t const* tb_uuid4_make_cstr(tb_char_t uuid_cstr[37], tb_char_t const* na
132132
if (!tb_uuid4_make(uuid, name)) return tb_null;
133133

134134
// make uuid string
135-
tb_long_t size = tb_snprintf( uuid_cstr
136-
, 37
137-
, "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X"
138-
, uuid[0], uuid[1], uuid[2], uuid[3]
139-
, uuid[4], uuid[5]
140-
, uuid[6], uuid[7]
141-
, uuid[8], uuid[9]
142-
, uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
143-
tb_assert_and_check_return_val(size == 36, tb_null);
144-
uuid_cstr[36] = '\0';
135+
static tb_char_t const* digits_table = "0123456789ABCDEF";
136+
tb_char_t* s = uuid_cstr;
137+
138+
s[0] = digits_table[(uuid[0] >> 4) & 15];
139+
s[1] = digits_table[uuid[0] & 15];
140+
141+
s[2] = digits_table[(uuid[1] >> 4) & 15];
142+
s[3] = digits_table[uuid[1] & 15];
143+
144+
s[4] = digits_table[(uuid[2] >> 4) & 15];
145+
s[5] = digits_table[uuid[2] & 15];
146+
147+
s[6] = digits_table[(uuid[3] >> 4) & 15];
148+
s[7] = digits_table[uuid[3] & 15];
149+
150+
s[8] = '-';
151+
152+
s[9] = digits_table[(uuid[4] >> 4) & 15];
153+
s[10] = digits_table[uuid[4] & 15];
154+
155+
s[11] = digits_table[(uuid[5] >> 4) & 15];
156+
s[12] = digits_table[uuid[5] & 15];
157+
158+
s[13] = '-';
159+
160+
s[14] = digits_table[(uuid[6] >> 4) & 15];
161+
s[15] = digits_table[uuid[6] & 15];
162+
163+
s[16] = digits_table[(uuid[7] >> 4) & 15];
164+
s[17] = digits_table[uuid[7] & 15];
165+
166+
s[18] = '-';
167+
168+
s[19] = digits_table[(uuid[8] >> 4) & 15];
169+
s[20] = digits_table[uuid[8] & 15];
170+
171+
s[21] = digits_table[(uuid[9] >> 4) & 15];
172+
s[22] = digits_table[uuid[9] & 15];
173+
174+
s[23] = '-';
175+
176+
s[24] = digits_table[(uuid[10] >> 4) & 15];
177+
s[25] = digits_table[uuid[10] & 15];
178+
179+
s[26] = digits_table[(uuid[11] >> 4) & 15];
180+
s[27] = digits_table[uuid[11] & 15];
181+
182+
s[28] = digits_table[(uuid[12] >> 4) & 15];
183+
s[29] = digits_table[uuid[12] & 15];
184+
185+
s[30] = digits_table[(uuid[13] >> 4) & 15];
186+
s[31] = digits_table[uuid[13] & 15];
187+
188+
s[32] = digits_table[(uuid[14] >> 4) & 15];
189+
s[33] = digits_table[uuid[14] & 15];
190+
191+
s[34] = digits_table[(uuid[15] >> 4) & 15];
192+
s[35] = digits_table[uuid[15] & 15];
193+
194+
s[36] = '\0';
145195
return uuid_cstr;
146196
}

0 commit comments

Comments
 (0)