Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#include <jsmincpp/deserialize/Deserializer.h>
#include <rapidjson/document.h>
#include <rapidjson/writer.h>
#include <rapidjson/stringbuffer.h>
#include <stdint.h>
#include <iostream>
using namespace std;
using namespace rapidjson;
struct Data {
double First;
double Second;
Data( )
:
First( 0.0 ),
Second( 0.0 ) {
}
void Deserialize( Document &d ) {
First = d [ "First" ].GetDouble( );
Second = d [ "Second" ].GetDouble( );
}
};
int main( ) {
cout << "It's work!" << endl;
double realResult = 0.0;
double testResult = 0.0;
char json [ ] =
"{\"First\":X0.01,\"Second\":X0.01}";
for ( uint32_t i = 0; i < 1000000; ++i ) {
uint8_t t = i % 3;
json [ 9 ] = '2' + t;
json [ 24 ] = '3' + t;
Document d;
d.Parse( json );
Data data;
data.Deserialize( d );
realResult += 20.01 + 30.01 + t * 20;
testResult += data.First + data.Second;
}
cout
<< "RealResult = " << realResult << ", TestResult = " << testResult
<< endl;
return 0;
}
template < typename D, typename H >
bool operator()( uint32_t hash, D &deserializer, H &handler ) {
if ( Head::HASH == hash ) {
bool ret = true;
// Здесь создаем объект и заполняем его
return ret;
} else
return Base_t::operator()( hash, deserializer, handler );
}
400997: 81 f9 53 c1 b0 53 cmp $0x53b0c153,%ecx
40099d: 0f 84 84 00 00 00 je 400a27 <main+0x247>
4009a3: 81 f9 5f 14 b3 b1 cmp $0xb1b3145f,%ecx
4009a9: 74 15 je 4009c0 <main+0x1e0>
STL и использовать его на контроллере, в котором всего-то 1МБайт флеша и 198кБайт ОЗУ, мягко говоря, странно.Вот уж не думал, что имея целый мегабайтище памяти жаба задавит использовать плюшки STL. Было б у вас 4 или 16k, тогда да.
Масштабируемая библиотека сериализации/десериализации JSON