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

OSCHINA-MIRROR/lijinting01-message

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

Предоставляет метод без параметров для доступа к форме потока байтов в виде строки Base64.

  • C2-05 Предоставляет метод String без аргументов для доступа к массиву байтов в формате Base64.

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

  • C2-06 Предоставляет метод без аргументов, возвращающий тот же тип, что и POJO, который принимается методом и десериализуется из массива байтов.

Метод, упомянутый в C2-06, не может напрямую возвращать объект, переданный в C2-01.

  • C2-07 Метод, требуемый C2-06, не должен возвращать POJO, принятый C2-01.

Сериализованный объект должен быть неизменным объектом. Не предоставляйте никаких методов set*, add* и других, которые изменяют состояние объекта. Метод, определённый в C2-02, должен выполнять защитное копирование внутреннего массива байтов.

2.3. Объекты эталонного тестирования

2.3.1. Пространственные объекты эталонного тестирования

Тестирование пространственных эталонов проще. Необходимо только случайным образом протестировать образцы и вывести использование пространства каждой системы сериализации по очереди.

  • Пространственное эталонное тестирование — это более простой вариант. Генерируйте образцы и записывайте затраты пространства каждой системой сериализации. Это всё, что нужно сделать.

2.3.2. Скоростные объекты эталонного тестирования

Для справедливого сравнения всех систем сериализации определены следующие ограничения для скоростных объектов эталонного тестирования:

C3-01 Предоставить метод, принимающий один аргумент типа Object (объект для сериализации) и один аргумент int (количество циклов).

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

C3-02 Запустить таймер до и после выполнения метода, определённого в C3-01, чтобы рассчитать общее затраченное время и среднее время каждой сериализации.

  • Запустите таймер до и после метода, указанного в C3-01, для расчёта общего затраченного времени и среднего затраченного времени на каждую сериализацию.

C3-03 Порядок выполнения скоростных эталонных тестов можно свободно изменять во время выполнения.

  • Порядок выполнения каждого скоростного эталонного теста можно свободно изменить во время выполнения.

3. Реализация тестовой программы

3.1. SerializedObject

SerializedObject — это базовый класс для всех объектов сериализации, соответствующий требованиям [2.2]. Подтипы SerializedObject сообщают своему суперклассу, как сериализовать упакованный объект и как десериализовать поток байтов обратно в объект. Подтипы могут реализовать метод beforeSerilize() для инициализации необходимых инструментов во время процесса сериализации. SerializationException повторно генерируется при перехвате любого проверенного исключения, возникающего во время сериализации в SerializedObject. SerializedObject предоставляет фабричный метод для создания своих подтипов, конструкторы которых являются закрытыми для пакета.

3.1.1. Hessian2

Hessian2SerializedObject требует дополнительной настройки для указания пользовательских стратегий сериализации и десериализации. Соответствующая конфигурация находится в каталоге META-INF.

3.2. Интерфейс Benchmark

Интерфейс скорости эталонного тестирования.

  • Интерфейс скорости эталонного тестирования.

Benchmark определяет метод выполнения для однократного эталонного тестирования в соответствии с [2.3.2]. Выполнение Benchmark перехватывается ProfilingAspect для расчёта затраченного времени. Общее затраченное время ProfilingAspect измеряется в миллисекундах, а среднее затраченное время одного вызова — в микросекундах.

3.3. SpeedBenchmarks

Комбинация реализаций всех известных интерфейсов Benchmark. Каждый интерфейс Benchmark выполняется отдельно 1000, 5000, 20 000, 50 000 и 200 000 раз. Определяет пул потоков для выполнения эталонного тестирования Benchmark и управляет его жизненным циклом.

  • Комбинация всех реализаций известного интерфейса Benchmark. Выполните каждый интерфейс Benchmark 1000, 5000, 20 000, 50 000 и 200 000 раз. Определите пул потоков, который выполняет эталонное тестирование Benchmark, и управляйте его жизненным циклом.

3.4. Автоматически сгенерированный код

Сообщения Protocol Buffers должны быть предварительно скомпилированы статически. 3.5. Тестирование моделей

TestingModels — это генератор тестовых данных, который может создавать случайные образцы объектов и перечислений для тестирования. Типы тестовых образцов генерируются компилятором Lombok. Исходный файл можно найти в каталоге message/testing-models/src/main/lombok, независимо от того, был ли он скомпилирован или нет.

3.6. Пакет io.demo.message.domain.proto

В пакете io.demo.message.domain.proto есть два типа классов:

  • Классы сообщений, сгенерированные компилятором Protobuf. Их можно найти после компиляции в папке message/testing-models/target/generated-sources/protobuf/java.
  • Классы преобразования между сообщениями Protobuf и классами тестовых примеров.

4. Как расширить тестовую программу

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

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

Введение

Бенчмарк и использование сериализации/десериализации сообщений. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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