|
1 | 1 | # simstr - библиотека строковых объектов и функций |
2 | | -<h2>Ускорь работу со строками в 2-10 раз!</h2> |
| 2 | +<span class="obfuscator"><a href="readme.md">On English | По-английски</a></span> |
3 | 3 |
|
4 | 4 | [](https://github.com/orefkov/simstr/actions/workflows/cmake-multi-platform.yml) |
5 | 5 |
|
6 | 6 | Версия 1.6.0. |
7 | 7 |
|
8 | | -<span class="obfuscator"><a href="readme.md">On English | По-английски</a></span> |
| 8 | +<h2>Ускорь работу со строками в 2-10 раз!</h2> |
| 9 | + |
9 | 10 |
|
10 | 11 | В этой библиотеке содержится современная реализация нескольких видов строковых объектов и различных алгоритмов для работы со строками. |
| 12 | +## Сгенерированная документация |
| 13 | +[Находится здесь](https://orefkov.github.io/simstr/docs_ru/) |
11 | 14 |
|
| 15 | +## Краткое описание |
12 | 16 | Цель библиотеки - сделать работу со строками в С++ такой же простой и лёгкой, как во множестве других языков, особенно |
13 | 17 | скриптовых, но при этом сохранив оптимальность и производительность на уровне С и C++, и даже улучшив их. |
14 | 18 |
|
|
95 | 99 | сравнения ключей по сравнению с ключами `std::string`. Поддерживается возможность регистро-независимого сравнения ключей (Ascii или |
96 | 100 | минимальный Unicode (см. предыдущий пункт)). |
97 | 101 |
|
| 102 | +## Бенчмарки |
| 103 | +Бенчмарки производятся с использованием фреймворка [Google benchmark](https://github.com/google/benchmark). |
| 104 | +Постарался сделать замеры для наиболее типичных операций, встречающихся в обычной работе. Я проводил замеры на своём оборудовании, под |
| 105 | +Windows и Linux (в WSL), с использованием компиляторов MSVC, Clang, GCC. Сторонние результаты приветствуются. |
| 106 | +Также проводил замеры в WASM, сборка в Emscripten. Обращаю внимание, что под WASM в Emscripten собирается 32-битная сборка, а значит, |
| 107 | +размеры буферов SSO в объектах меньше. |
| 108 | + |
| 109 | +На [странице релизов](https://github.com/orefkov/simstr/releases) вы можете скачать бинарные сборки бенчмарков и запустить их на своём оборудовании. |
| 110 | + |
| 111 | +Также вы можете запустить [Emscripten сборку бенчмарков](https://orefkov.github.io/simstr/bench/benchStr.html) прямо в браузере. |
| 112 | +(Перед переходом по ссылке лучше предварительно откройте "Инструменты разработчика" (обычно **F12**), чтобы видеть консоль |
| 113 | +Javascript, так как до окончания бенчмарков страница не будет обновляться, а весь вывод будет виден в консоли). |
| 114 | + |
| 115 | +- [Исходный код бенчмарков](bench/bench_str.cpp) |
| 116 | +- [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html) |
| 117 | + |
98 | 118 | ## Строковые выражения |
99 | 119 | Это специальные объекты, которые эффективно реализуют конкатенацию строк, с помощью `operator+`. |
100 | 120 | Главный принцип, за счёт которого достигается эффективная работа - сколько бы операндов не входило во всё выражение, |
@@ -263,6 +283,7 @@ int split_and_calc_total_sim(ssa numbers, ssa delimiter) { |
263 | 283 | Помимо приведённых здесь отдельных примеров, можно посмотреть исходники: |
264 | 284 | - [тестов всей библиотеки](https://github.com/orefkov/simstr/blob/main/tests/test_str.cpp) |
265 | 285 | - [тестов только strexpr части](https://github.com/orefkov/simstr/blob/main/tests/test_expr_only.cpp) |
| 286 | +- [примеры использования своих типов в строковых выражениях](https://github.com/orefkov/simstr/blob/main/tests/test_tostrexpr.cpp) |
266 | 287 | - [бенчмарков](https://github.com/orefkov/simstr/blob/main/bench/bench_str.cpp) |
267 | 288 | - [утилиты подготовки html](https://github.com/orefkov/simstr/blob/main/bench/process_result.cpp) из результатов бенчмарков. |
268 | 289 |
|
@@ -320,27 +341,13 @@ target_link_libraries(<your target> PUBLIC simstr::simstr) |
320 | 341 | Работа проверялась под Windows на MSVC-19 и Clang-19, под Linux - на GCC-13 и Clang-21. |
321 | 342 | Также проверялась работа в WASM, сборка в Emscripten 4.0.6, Clang-21. |
322 | 343 |
|
323 | | - |
324 | 344 | ## Удобная отладка |
325 | 345 | Вместе с библиотекой поставляются два файла, делающие просмотр simstr строковых объектов в отладчиках |
326 | 346 | более удобным.\ |
327 | 347 | Более подробно описано [здесь](for_debug/readme_ru.md). |
328 | 348 |
|
329 | | -## Бенчмарки |
330 | | -Бенчмарки производятся с использованием фреймворка [Google benchmark](https://github.com/google/benchmark). |
331 | | -Постарался сделать замеры для наиболее типичных операций, встречающихся в обычной работе. Я проводил замеры на своём оборудовании, под |
332 | | -Windows и Linux (в WSL), с использованием компиляторов MSVC, Clang, GCC. Сторонние результаты приветствуются. |
333 | | -Также проводил замеры в WASM, сборка в Emscripten. Обращаю внимание, что под WASM в Emscripten собирается 32-битная сборка, а значит, |
334 | | -размеры буферов SSO в объектах меньше. |
335 | | - |
336 | | -- [Исходный код бенчмарков](bench/bench_str.cpp) |
337 | | -- [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html) |
338 | | - |
| 349 | +## Где уже используется |
339 | 350 | Также simstr используется в моих проектах: |
340 | 351 | - [simjson](https://github.com/orefkov/simjson) - библиотека для простой работы с JSON с использованием строк simstr. |
341 | 352 | - [simrex](https://github.com/orefkov/simrex) - обёртка для работы с регулярными выражениями [Oniguruma](https://github.com/kkos/oniguruma) с использованием строк simstr. |
342 | 353 | - [v8sqlite](https://github.com/orefkov/v8sqlite) - внешняя компонента для 1С-Предприятия V8 для работы с sqlite. |
343 | | - |
344 | | - |
345 | | -## Сгенерированная документация |
346 | | -[Находится здесь](https://orefkov.github.io/simstr/docs_ru/) |
|
0 commit comments