Skip to content

Commit 88c62cc

Browse files
committed
temp
1 parent 82e3811 commit 88c62cc

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

include/boost/json/detail/sse2.hpp

+25-8
Original file line numberDiff line numberDiff line change
@@ -315,17 +315,34 @@ inline int count_digits( char const* p ) noexcept
315315

316316
inline uint64_t parse_unsigned( uint64_t r, char const * p, std::size_t n ) noexcept
317317
{
318-
constexpr int N = 4;
319-
auto const e = p + n;
320-
for( ; (e - p) >= N; p += N )
318+
while( n >= 4 )
321319
{
322-
for( auto i = 0; i < N; ++i )
323-
r = r * 10 + p[i] - '0';
324-
}
320+
r = r * 10 + p[0] - '0';
321+
r = r * 10 + p[1] - '0';
322+
r = r * 10 + p[2] - '0';
323+
r = r * 10 + p[3] - '0';
325324

326-
for( ; p != e; ++p )
327-
r = r * 10 + *p - '0';
325+
p += 4;
326+
n -= 4;
327+
}
328328

329+
switch( n )
330+
{
331+
case 0:
332+
break;
333+
case 1:
334+
r = r * 10 + p[0] - '0';
335+
break;
336+
case 2:
337+
r = r * 10 + p[0] - '0';
338+
r = r * 10 + p[1] - '0';
339+
break;
340+
case 3:
341+
r = r * 10 + p[0] - '0';
342+
r = r * 10 + p[1] - '0';
343+
r = r * 10 + p[2] - '0';
344+
break;
345+
}
329346
return r;
330347
}
331348

0 commit comments

Comments
 (0)