[#] [Перевод] Быстрое удаление пробелов из строк на процессорах ARM
habrabot(difrex,1) — All
2017-07-09 20:00:06


![][1]Предположим, что я дал вам относительно длинную строку, а вы хотите удалить из неё все пробелы. В ASCII мы можем определить пробелы как знак пробела (‘ ’) и знаки окончания строки (‘\\r’ и ‘\\n’). Меня больше всего интересуют вопросы алгоритма и производительности, так что мы можем упростить задачу и удалить все байты со значениями меньшими либо равными 32.

В [предыдущией статье][2], где я задавал вопрос об удалении пробелов на скорость, лучшим ответом было использование векторизации с помощью 128-битных регистров (SSE4). Оно оказалось в 5-10 раз быстрее подхода в лоб.

Очень удобно, что во всех процессорах имеются 128-битные векторные регистры, также как в процессорах x64. Неужели процессоры ARM могут работать настолько же быстро, как процессоры x64?
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/ad3/88a/854/ad388a854496683ed3c076b107ecf56d.jpg
[2]: http://lemire.me/blog/2017/01/20/how-quickly-can-you-remove-spaces-from-a-string/
[3]: https://habrahabr.ru/post/332710/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut