1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jkuang-libts

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

libTS3 базовая библиотека

Build Status

1. Основные сведения

  • libTS3 — это программная библиотека «C++ кроссплатформенная инфраструктура для транзакций», разработанная Джесси Куангом (Jesse Kuang).
  • Используется C++17 (совместимый с C++11, если возможно).
    • Windows:
    • Linux: GCC 9.3 или новее, cmake версии 3.10 или новее.
  • Предпочтение отдаётся кроссплатформенному Linux, но старые ОС не поддерживаются.
  • Рассматриваются только 64-битные платформы.
  • Строки поддерживают только UTF8, исходный файл также использует кодировку UTF8. GBK необходимо перекодировать.
    • MSVC: в include/ts3/types.h задано: #pragma execution_character_set("UTF-8").
    • GCC: по умолчанию используется UTF-8, можно принудительно использовать параметр -fexec-charset=UTF-8.

Почему libts3? В условиях множества open source библиотек, зачем нужна ещё и libts3?

  • Стремление к скорости.
    • Стандартные библиотеки (std, boost) хороши, но скорость не является их целью.
    • Когда скорость и универсальность требуют компромисса, libts3 выбирает скорость.
    • Когда скорость и использование оперативной памяти RAM требуют компромисса, libts3 выбирает скорость. Однако следует учитывать, что большое количество оперативной памяти может привести к пропускам кэша CPU, и это не обязательно ускорит работу.
    • Проблемы со скоростью делятся на два класса: низкая задержка (Low latency) и высокая пропускная способность (High throughtput), и при конфликте между ними предпочтение отдаётся низкой задержке.
  • Снижение зависимости от сторонних библиотек.
  • Соответствие собственным потребностям.
    • Многие сторонние библиотеки предлагают высокую скорость и мощные функции, но они часто выходят за рамки моих потребностей.
    • Я предпочитаю разрабатывать библиотеку, которая точно соответствует моим требованиям.

Подготовка

Основные инструменты разработки и версии

  • Linux: CentOS 7 с devtoolset-9 и epel или Fedora 30 с gcc9.
    • cmake версии 3.13.
    • gcc 9.
    • сборка через cmake.
  • Windows: VS 2017 (TODO), в настоящее время используется cmake.
    • mkdir tests/build.
    • cd tests/build.
    • cmake -G "Visual Studio 15 Win64" ..
  • Включить все предупреждения компилятора: важность предупреждений не требует дополнительного упоминания.
    • Предупреждения — недопустимы.
  • Инструменты UnitTest:
    • gtest-devel, google-benchmark-devel, fmt-devel.

2. STL-библиотека

Julian — юлианский день, Message — пакет сообщений, Serialization — реализация POD для простых типов, Timestamp — микросекунды/наносекунды с низким временем задержки, PriceType — обмен фиксированными и плавающими точками double.

Julian

Юлианский день (Julian Day Number, JDN) рассчитывается с полудня по Гринвичу, включая целый день времени, начиная с точки отсчёта до юлианского календаря 4713 года до н. э. 1 января в полдень (по григорианскому календарю это 4714 год до н. э., 24 ноября), эта дата является общей точкой трёх многолетних циклов и наиболее близка к современной точке отсчёта. В Unix-эпохе 1970 года 1 января юлианский день равен 2440588. Используя юлианский день, одно 16-битное целое число может представлять примерно 180 лет, а вычисление дня недели требует только взятия остатка от деления на 7 (где 0 означает понедельник, а 6 — воскресенье).

Serialization

Простая сериализация и десериализация, использующая Little Endian (малый порядок байтов, используемый процессорами Intel/ARM64 для целочисленных значений), строки string и байтовые массивы Bytes используют Pascal-кодирование (длина 0...255), представляя длину одним байтом после последующих bytes. Шаблонные функции-члены decode/encode поддерживают интегральные типы (однобайтовые/2/4/8-байтовые значения).

Timestamp

Класс timeval просто инкапсулирует структуру timespec и использует int32_t для представления секунд и наносекунд. Класс sysclock используется для воспроизведения/моделирования системного времени. Абстрактный класс timestamp представляет миллисекунды, микросекунды и наносекунды. DateTime — абстрактный класс, представляющий миллисекунды, микросекунды и наносекунды как дату и время.

PriceType

Обмен фиксированными точками и плавающей точкой double.

Types

Добавление определения int48_t. Добавление определения pstring, Pascal-строки длиной менее 256 байт, где первый байт содержит длину строки.

Math

Формула: $ f(x) = \int_{-\infty}^\infty \hat f(\xi)e^{2 \pi \xi x}d\xi $

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека C++ для торговой/матчинговой системы. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jkuang-libts.git
git@api.gitlife.ru:oschina-mirror/jkuang-libts.git
oschina-mirror
jkuang-libts
jkuang-libts
master