(ws cobra subscriber) use a Json::StreamWriter to write to std::cout, and save one std::string allocation for each message printed
This commit is contained in:
parent
40c619c1ec
commit
cfa5718e40
@ -1,6 +1,10 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All changes to this project will be documented in this file.
|
All changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [9.1.6] - 2020-03-29
|
||||||
|
|
||||||
|
(ws cobra subscriber) use a Json::StreamWriter to write to std::cout, and save one std::string allocation for each message printed
|
||||||
|
|
||||||
## [9.1.5] - 2020-03-29
|
## [9.1.5] - 2020-03-29
|
||||||
|
|
||||||
(docker) trim down docker image (300M -> 12M) / binary built without symbol and size optimization, and source code not copied over
|
(docker) trim down docker image (300M -> 12M) / binary built without symbol and size optimization, and source code not copied over
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define IX_WEBSOCKET_VERSION "9.1.5"
|
#define IX_WEBSOCKET_VERSION "9.1.6"
|
||||||
|
@ -14,8 +14,19 @@
|
|||||||
|
|
||||||
namespace ix
|
namespace ix
|
||||||
{
|
{
|
||||||
|
using StreamWriterPtr = std::unique_ptr<Json::StreamWriter>;
|
||||||
|
|
||||||
|
StreamWriterPtr makeStreamWriter()
|
||||||
|
{
|
||||||
|
Json::StreamWriterBuilder builder;
|
||||||
|
builder["commentStyle"] = "None";
|
||||||
|
builder["indentation"] = ""; // will make the JSON object compact
|
||||||
|
std::unique_ptr<Json::StreamWriter> jsonWriter(builder.newStreamWriter());
|
||||||
|
return jsonWriter;
|
||||||
|
}
|
||||||
|
|
||||||
void writeToStdout(bool fluentd,
|
void writeToStdout(bool fluentd,
|
||||||
Json::FastWriter& jsonWriter,
|
const StreamWriterPtr& jsonWriter,
|
||||||
const Json::Value& msg,
|
const Json::Value& msg,
|
||||||
const std::string& position)
|
const std::string& position)
|
||||||
{
|
{
|
||||||
@ -29,12 +40,15 @@ namespace ix
|
|||||||
msgWithPosition["position"] = position;
|
msgWithPosition["position"] = position;
|
||||||
enveloppe["message"] = msgWithPosition;
|
enveloppe["message"] = msgWithPosition;
|
||||||
|
|
||||||
std::cout << jsonWriter.write(enveloppe);
|
jsonWriter->write(enveloppe, &std::cout);
|
||||||
|
std::cout << std::endl; // add lf and flush
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
enveloppe = msg;
|
enveloppe = msg;
|
||||||
std::cout << position << " " << jsonWriter.write(enveloppe);
|
std::cout << position << " ";
|
||||||
|
jsonWriter->write(enveloppe, &std::cout);
|
||||||
|
std::cout << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,13 +63,10 @@ namespace ix
|
|||||||
conn.configure(config);
|
conn.configure(config);
|
||||||
conn.connect();
|
conn.connect();
|
||||||
|
|
||||||
Json::FastWriter jsonWriter;
|
|
||||||
|
|
||||||
// Display incoming messages
|
|
||||||
std::atomic<int> msgPerSeconds(0);
|
std::atomic<int> msgPerSeconds(0);
|
||||||
std::atomic<int> msgCount(0);
|
std::atomic<int> msgCount(0);
|
||||||
|
|
||||||
std::atomic<bool> fatalCobraError(false);
|
std::atomic<bool> fatalCobraError(false);
|
||||||
|
auto jsonWriter = makeStreamWriter();
|
||||||
|
|
||||||
auto timer = [&msgPerSeconds, &msgCount, &fatalCobraError] {
|
auto timer = [&msgPerSeconds, &msgCount, &fatalCobraError] {
|
||||||
while (!fatalCobraError)
|
while (!fatalCobraError)
|
||||||
|
Loading…
Reference in New Issue
Block a user