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-10-02 18:48:23 +01:00
2018-12-04 18:17:27 +00:00
2018-05-09 16:52:26 +01:00
2018-05-30 12:18:56 +02:00
2018-11-21 00:01:44 +02:00
2017-11-12 15:51:29 +01:00
2016-04-08 08:12:47 +03:00
2018-11-01 13:16:17 +00:00
2018-11-21 00:01:44 +02:00
2018-05-10 09:47:41 +03:00
2016-04-08 08:12:47 +03:00
2018-04-16 21:11:13 +02:00
2018-04-16 21:11:13 +02:00
2018-07-11 16:55:20 +02:00
2018-11-26 13:30:21 +00:00
2018-12-03 14:36:08 +01:00
2018-02-07 10:11:46 +00:00
2018-03-19 12:24:04 +00:00
2018-04-02 19:23:06 +01:00
2018-05-30 14:41:40 +02:00
2018-12-03 14:36:08 +01:00
2018-11-21 00:01:44 +02:00
2017-04-17 23:03:15 +03:00
2017-05-17 12:30:03 +03:00
2018-04-07 14:52:58 +03:00
2018-04-07 14:52:58 +03:00
2018-11-21 00:01:44 +02:00
2016-06-09 10:03:04 +02:00
2016-06-09 09:58:00 +02:00
2018-11-21 00:01:44 +02:00
2018-05-03 17:05:06 -07:00
2017-12-14 15:05:48 -05:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2018-11-01 13:16:17 +00:00
2018-07-18 12:28:06 +01: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-01 13:16:17 +00:00
2018-05-10 09:47:41 +03:00
2017-12-05 14:28:34 +00:00
2016-09-28 17:34:16 +03:00
2018-11-01 13:16:17 +00:00
2016-04-08 08:12:47 +03:00
2018-04-10 10:25:06 +03:00
2018-05-15 11:22:21 -04:00
2016-11-14 18:01:43 +02:00
2018-04-16 20:56:30 +02:00
2018-04-16 20:56:30 +02:00
2018-08-30 20:56:44 -04:00
2018-10-25 15:15:05 +03:00
2017-09-18 12:44:05 +02:00
2018-11-01 13:16:17 +00:00
2018-08-26 11:02:34 +03:00
2018-01-30 18:33:25 +01:00
2018-07-17 16:39:43 +02:00
2016-04-08 08:12:47 +03:00
2018-09-03 17:09:54 +03:00
2018-11-21 14:04:27 +01:00
2018-05-31 10:09:01 +01:00
2016-04-08 08:12:47 +03:00
2016-04-08 08:12:47 +03:00
2018-05-09 16:52:26 +01:00
2018-07-11 10:15:01 +01:00
2018-07-20 13:50:17 -07:00
2018-11-20 16:15:12 +00:00
2018-06-27 12:48:30 +02:00
2016-04-08 08:12:47 +03:00
2018-11-21 00:01:44 +02:00
2018-09-30 11:12:23 +03:00
2016-04-08 08:12:47 +03:00
2016-04-08 08:12:47 +03:00
2016-04-08 08:12:47 +03:00
2018-11-21 00:01:44 +02:00
2017-10-18 08:49:52 +02:00
2018-05-30 14:41:41 +02:00
2017-06-29 02:08:12 -03:00
2018-11-21 18:38:50 +02:00
2018-12-05 21:51:01 +02:00
2018-12-05 21:51:01 +02:00
2016-04-08 08:12:47 +03:00
2016-07-19 18:21:58 +03:00
2018-11-21 00:01:44 +02:00
2018-11-21 00:01:44 +02:00
2017-04-25 11:43:04 +02:00