eclipse-iceoryx / iceoryx

Eclipse iceoryx™ - true zero-copy inter-process-communication
https://iceoryx.io
Apache License 2.0
1.65k stars 384 forks source link

Is there a cost comparison between serialization app and roudi with protobuf or other efficient implementation #2303

Closed sgf201 closed 3 months ago

sgf201 commented 3 months ago

sendBuffer seems serialized by simple string echo

                    runtime::IpcMessage sendBuffer;
                    sendBuffer << runtime::IpcMessageTypeToString(runtime::IpcMessageType::CREATE_NODE_ACK)
                               << cxx::convert::toString(offset) << cxx::convert::toString(m_mgmtSegmentId);

                    process->sendViaIpcChannel(sendBuffer);
                    m_processIntrospection->addNode(RuntimeName_t(cxx::TruncateToCapacity, runtimeName.c_str()),
                                                    NodeName_t(cxx::TruncateToCapacity, nodeName.c_str()));
                    LogDebug() << "Created new node " << nodeName << " for process " << runtimeName;
elBoberido commented 3 months ago

No, there is no comparision. The snippet you provided shows the communication between RouDi and the apps. This only happens when an App registers/deregiszers at RouDi or requests resources like a Publisher (speaking of the main branch). Since this does not happen that often and the messages are small, any serialization format will produce sufficient performant code. There's an old branch with a proof of concept which tried to improve the serialization but not because of performance reasons but to support such things like nested structs more easily and clean up the code base for better maintainability. It never moved out of the proof of concept phase, though.

Does this answer your question? Can the issue be closed?

sgf201 commented 3 months ago

thanks a lot