LINUX.ORG.RU

StringZilla 3.8.1

 , , , ,


1

2

StringZillaSIMD- и SWAR-оптимизированная библиотека для C++ (с биндингами для языков C, JavaScript (модуль Node.js), Python, Rust и Swift) для быстрых строковых операций: поиск подстрок и набора символов (прямой и обратный), сортировка, расстояние Левенштейна, расстояние Хэмминга и других. Однако, функциональность не одинакова для всех языков.
Проект распространяется по лицензии Apache-2.0.

По утверждению автора библиотек, некоторые операции ускорены в пять (или более) раз.

В новой версии:

  • исправлена ошибка аллокации строки;
  • сделана доступной функция is_internal() (C++).

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

SIMD- и SWAR-

Я даже посмотрел непонятное второе слово в википедии, оказалось что в контексте х86 эти два слова - синонимы, а архитектуру где SIMD без регистров (т.е. не SWAR) ещё надо поискать.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Если верить Википедии то SWAR это SIMD не требующий специальных регистров, т.е. умеющий работать с general purpose. Насколько я понимаю ранние векторные процессоры под это не попадали.

Slackware_user ★★★★★
()
Ответ на: комментарий от Slackware_user

Не знаю откуда ты это взял. В статье про SWAR, на которую есть ссылка из стартового сообщения, прямым текстом написано, что pentium mmx под те критерии попадает. И это первый х86 проц, в котором были инструкции для параллельной обработки данных.

Может быть, в начале 90-х и в более древние времена и были процы (не х86) которые simd но не «swar», но упоминать об этих подробностях спустя 30+ лет как-то странно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Вроде как все sse кроме 4 попадают. 4 либо отсутствовала на момент написания либо не swar

Slackware_user ★★★★★
()
Ответ на: комментарий от firkax

И возможно что тут имеется ввиду не архитектура а характеристика алгоритмов. Насколько я понимаю simd может пользовать и только «свои» регистры

Slackware_user ★★★★★
()
Ответ на: комментарий от dataman

Смысл этого сообщения от меня ускользает, пояснишь подробнее что тут имеется ввиду?

SIMD это возможность одной инструкцией провести параллельно несколько одинаковых математических операций над рядом расположенными наборами данных и записать рядом ответы (если они есть).

firkax ★★★★★
()
Ответ на: комментарий от dataman

«Упакованные» всегда про simd говорят, это не какое-то особенное свойство и особого смысла это слово в применении к simd не несёт. Единственное что я там заметил - это то, что для simd-операций используется не специальная simd-инструкция, а инструкция общего назначения, которая по случайности оказалась simd-совместимой (точнее, таковыми являются все побитовые операции - and, or, xor, not, а при дополнительных допущениях о данных можно и арифметику со сдвигами туда прицепить).

Дело в этом? Если да, то никто такое никакими специальными аббревиатурами вообще не называет, это просто «оптимизированный алгоритм». Для strlen в libc давным давно такой например.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от dataman

Хорошо, это слово иногда употребляют всякие теоретики, но в практическом контексте я его не встречал вообще ни разу и впервые увидел в этой теме. При том что про подобную оптимизацию я знал давно, и не раз видел её упоминания в разных статьях.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну да, автор simdjson, simdutf и т.д. – теоретик, конечно.

dataman ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.