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)

сишники тут? вот так зачем делать:

sz_string_view_t haystack = {your_text, your_text_length};
sz_string_view_t needle = {your_subtext, your_subtext_length};

// Perform string-level operations
sz_size_t substring_position = sz_find(haystack.start, haystack.length, needle.start, needle.length);
Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

А что не нравится то? Не понял. sz_string_view_t, sz_size_t, sz_find это всё какие-то внутренние абстракции этой библиотеки. Ну нет в сишке ООП нормального вот и извращается как может.

peregrine ★★★★★
()
Ответ на: комментарий от Anoxemian
sz_string_view_t haystack = {your_text, your_text_length};

Дедушка Вирт был прав во всём!

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

Что именно? Обычный код, разве что просматривается с++-ная манера вызывать какие-то функции в объявлениях.

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

Я не про нравится/нет, просто интересно, зачем раскрывать структуру при передаче в функцию и про копирование, передать указатель вроде как выглядит логичнее.

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

Причин может быть несколько:

1) если передать по указателю - то до полей структуры будет сложнее добираться, как в синтаксисе исходника, так и в машинном коде, а компилятору, возможно, будет сложнее это оптимизировать

2) возможно, вызываемая функция для удобства не должна знать структуру sz_string_view_t и должна работать с простыми типами, например потому что она должна принимать и rvalue тоже

3) контекст кода не видел, но возможно там надо передать именно по значению

Вопросы про «почему раскрывать» и «почему копировать» я объединил, потому что, несмотря на то что современный gcc вроде умеет передавать структуры больше машинного слова по значению, так делать не принято - это запутывает логику работы и программы и компилятора.

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