Git Product home page Git Product logo

serialisationtesting's Introduction

Исследование методов сериализации данных

Постановка задачи

Цель: на языке JavaScript реализовать приложение для тестирования эффективности работы с различными форматами сериализации данных. В процессе тестирования форматов сериализации необходимо учитывать следующие характеристики:

  1. Размер сериализованной структуры данных;
  2. Время сериализации/десериализации.

В сериализуемой структуре желательно представить несколько различных видов данных, включая:

  • строковые данные,
  • массивы данных,
  • словари,
  • целочисленные данные,
  • данные с плавающей запятой.

Приложение должно обеспечивать:

  • выполнение операций сериализации/десериализаци набора данных, во все форматы:
    • XML
    • JSON (он же нативный сериализатор)
    • Google Protocol Buffers
    • Apache Avro
    • YAML
    • MessagePack
  • представление в наглядном виде результатов выполнения сериализации/десериализации.

Необходимо предоставить отчет в формате таблицы Excel о форматах сериализации данных.

Запуск приложения

Локально

Необходимо наличие Node, версии не менее 15.14.0 (совместимость пакетов с более новыми версиями не проверялась)

Запуск приложения:

cd your/project/directory
npm install
node src/index.js

По ходу работы приложения сообщается о ходе выполнения сериализаторов / десериализаторов, в конце выводится статистика по каждому из форматов для ряда файлов (сэмплов).

--------------  JSON STATS  --------------

  ## SAMPLE 1:

   - initial size(bytes):	284

   - serialised size(bytes):	178

   - mean serialisation time(ns):	19481.310099363327

   - mean deserialisation time(ns):	452444.1924691201
   ...

В проекте имеется конфигурационный файл (config.js), в котором можно выбрать тестируемые форматы, количество прогонов тестов, а также виды сериализуемых структур (описаны в файле /constants/sampleStructs.js). Для форматов без схемы можно добавлять свои описания структур, тестировщик сам сгенерирует нужные файлы. Также стоит заметить, что во время работы приложения создается папка с временными файлами (по умолчанию test_data в корне проекта). Каждому экземпляру класса-тестировщика можно передать отдельный путь.

Требуемый отчет доступен по ссылке

В Docker

Ссылка на образ в репозитории

docker pull alucardik/soa-images:serialisation-test
docker run --name your-container-name alucardik/soa-images:serialisation-test

Все рабочие файлы внутри докера хранятся в /serialization-test.

serialisationtesting's People

Contributors

alucardik avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.