ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1153313 Топик полностью
framer (09.12.2021 17:47, просмотров: 504) ответил Evgeny_CD на Я нашел библотеку для тренировки Klen. POCO Это старый, хорошо продуманный проект. Интересно, во что его удастся утрамбовать Klen
Вроде как библиотека хорошая. 0 — внешних зависимостей от остальных библиотек. 

Но …

1) сильно завязана на платформы с ОС (thread, mutex, process, files).

2) много разных модулей "мох и болото".

3) По полной используется STL.

4) местами г..код. Отвязал от ОС. Попробовал скомпилировать модуль JSON. На стандартным STL.

результат:


#include "Poco/JSON/JSON.h"
#include "Poco/JSON/Parser.h"
#include "Poco/Dynamic/Struct.h"
#include <assert.h>

using namespace Poco::JSON;
using namespace Poco::Dynamic;
using Poco::DynamicStruct;

void test_poco () {
	std::string json = "{ \"test\" : null }";
	Parser parser;

	Var result;
	try
	{
		result = parser.parse(json);
	}
	catch(JSONException& jsone)
	{
		std::cout << jsone.message() << std::endl;
	}
	assert(result.type() == typeid(Object::Ptr));

	Object::Ptr object = result.extract<Object::Ptr>();
	assert(object->isNull("test"));
	Var test = object->get("test");
	assert(test.isEmpty());

	Poco::Nullable<int> test2 = object->getNullableValue<int>("test");
	assert(test2.isNull());

	DynamicStruct ds = *object;
	assert(ds["test"].isEmpty());

	const DynamicStruct& rds = *object;
	assert(rds["test"].isEmpty());

}


П.С. Статистика по больнице. Тема не подъёмная.

Около 50кБ левый regexp " Perl-Compatible Regular Expressions ".

Есть абстрактный уровень типов. Poco::Dynamic::VarHolder и Poco::Dynamic::Var около 15кб.

Сам модуль JSON 7,5kb.

Как подозревал много занимают не аллокаторы а итераторы. std::basic_ios ХХХ 5кб, std::istreambuf_iterator ХХХ 20кб , std::оstreambuf_iterator ХХХ 10кб и тд.

Кому интересно файл мап.

В последнем столбике размер в байтах.

map.txt