Hello,

I developed a application using Tuscany SCA M3 native and SDO on Ubuntu 9.04. I coded in C++ and actually everything works fine, I am just facing a performance issue. When I analyzed the code, I discovered that the following lines use most time, compared to other sections of my program:

//this command executes still fast
DataFactoryPtr mdg = DataFactory::getDataFactory();

//this two lines run very slow
XSDHelperPtr xsh =  HelperProvider::getXSDHelper( mdg );
xsh->defineFile("myMessageStruct.xsd");

//and continue fast...
const Type& tmsg     = mdg->getType("MyMessageNS","MyMessageType");

The slow part is, when creating a SDO message to send it via a SCA binding to an other component, so no WebServices or anything else is included.

I guess the reason is, that the I/O to load the file and process the XML is causing the delay. As the xsd file is not changing during run time, I came up with the idea to just load the file once and then keep the structure in memory. So I tried to save the variable /mdg/ and /xsh/ in static variables and just load it on the first call. It worked for the first call, but at the second I got following exception:

Exception in createSdoStructure!
Exception object :
 class:           SDOUnsupportedOperationException
 file name:       DataFactoryImpl.cpp
 line number:     491
 function:        "DataFactory::addPropertyToType"
 description:     Adding Properties after type completed
 location history:
terminate called after throwing an instance of 'SDONullPointerException'
Aborted

Obviously it's not working that easily ;)

My question is: is there a way to avoid loading the .xsd file every time I want to create a SDO message? And if so, how can I do it or where can I find information?

A second question I have: I built SCA and SDO with the build_scanative.sh respectively build_sdocpp.sh script and thus without any custom parameters. While compiling I think I have seen some debug options. So I am wondering if there are any compiler options to maybe speed up the application.

Finally I have to mention, that due to project requirements I have to use tuscany M3.

Thanks for your help in advance!

Best Regards
Michael

Reply via email to