Yibo Cai (Arm Technology China)
6fadba56cc
utils: optimize UTF-8 validation
...
UTF-8 string is now validated by boost::locale::conv::utf_to_utf, it
actually does string conversions which is more than necessary. As
observed on Arm server, UTF-8 validation can become bottleneck under
heavy loads.
This patch introduces a brand new SIMD implementation supporting both
NEON and SSE, as well as a naive approach to handle short strings.
The naive approach is 3x faster than boost utf_to_utf, whilst SIMD
method outperforms naive approach 3x ~ 5x on Arm and x86. Details at
https://github.com/cyb70289/utf8/ .
UTF-8 unit test is added to check various corner cases.
Signed-off-by: Yibo Cai <yibo.cai@arm.com >
Message-Id: <1543978498-12123-1-git-send-email-yibo.cai@arm.com >
2018-12-05 21:51:01 +02:00
..
2018-12-03 19:02:01 +02:00
2018-12-04 19:47:28 +01:00
2018-11-21 00:01:44 +02:00
2018-09-12 12:14:21 +01:00
2018-11-01 13:16:17 +00:00
2018-11-21 00:01:44 +02:00
2018-12-03 13:50:23 -08:00
2018-06-25 09:21:47 +01:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-06-19 16:26:52 +03:00
2018-12-03 14:40:35 +01:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-05-31 15:51:11 +01:00
2018-11-01 13:16:17 +00:00
2018-11-21 00:01:44 +02:00
2018-11-01 13:16:17 +00:00
2018-11-29 14:53:30 +01:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-11-01 10:19:32 +02:00
2018-11-01 13:16:17 +00:00
2018-08-27 19:24:05 +01:00
2018-11-29 14:53:30 +01:00
2018-11-01 13:16:17 +00:00
2018-11-01 13:16:17 +00:00
2018-09-18 17:22:59 +01:00
2018-10-24 13:29:51 +03:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-06-15 09:56:45 +01:00
2018-08-01 16:50:58 +01:00
2018-11-01 13:16:17 +00:00
2018-11-21 00:01:44 +02:00
2018-07-25 13:16:06 +02:00
2018-05-28 18:12:12 +03:00
2018-09-05 10:19:59 +03:00
2018-10-25 12:53:30 +03:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-05-31 15:51:11 +01:00
2018-09-20 11:31:24 +02:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-05-31 10:09:01 +01:00
2018-12-04 08:51:05 +02:00
2018-09-20 11:31:24 +02:00
2018-11-21 00:01:44 +02:00
2018-11-01 13:16:17 +00:00
2018-07-17 16:32:04 +03:00
2018-09-20 11:31:24 +02:00
2018-11-21 00:01:44 +02:00
2018-12-04 08:51:05 +02:00
2018-12-05 10:43:29 +02:00
2018-12-04 08:51:05 +02:00
2018-11-23 12:14:06 +00:00
2018-11-01 13:16:17 +00:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-07-11 10:15:01 +01:00
2018-05-31 15:51:11 +01:00
2018-11-21 11:43:42 +02:00
2018-11-21 00:01:44 +02:00
2018-12-05 21:51:01 +02:00
2018-11-21 00:01:44 +02:00
2018-11-22 11:30:31 +00:00
2018-11-01 13:16:17 +00:00
2018-11-01 13:16:17 +00:00
2018-11-01 13:16:17 +00:00
2018-07-18 12:28:06 +01:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-05-22 16:52:58 +02:00
2018-10-07 19:14:29 +03:00
2018-11-01 13:16:17 +00:00
2018-11-01 13:16:17 +00:00
2018-12-05 10:43:29 +02:00
2018-11-24 20:16:54 -02:00
2018-11-26 13:25:23 +01:00
2018-11-21 00:01:44 +02:00
2018-11-24 20:16:54 -02:00
2018-12-04 10:32:10 +02:00
2018-11-24 18:53:07 -02:00
2018-06-28 17:20:28 +08:00
2018-11-01 13:16:17 +00:00
2018-11-21 18:38:50 +02:00
2018-11-01 13:16:17 +00:00
2018-07-18 12:28:06 +01:00
2018-11-21 00:01:44 +02:00
2018-12-05 21:51:01 +02:00
2018-07-26 12:03:37 +01:00
2018-11-15 19:41:43 +02:00
2018-11-15 18:03:28 +02:00
2018-11-15 19:41:43 +02:00
2018-11-21 00:01:44 +02:00