Hi Simon,
thanks for the quick reply. My schema isn't using namespaces from the
network except maybe standard xsd types.
I took and closer look at the code and I found out, that I wasn't coding
well. After fixing it everything worked like intended and this part
didn't consumed any cpu time after the first call. My program is working
now way faster, but I still would need to squeeze out some performance,
so my second question still persists:
Are there any options to tweak the performance like turning off debug
mode or turning off writing to log file, using more cpu cores, etc.?
Thanks a lot for your help!
Best Regards
Michael
On 02.11.2010 17:55, Simon Laws wrote:
On Mon, Nov 1, 2010 at 12:08 PM, Michael Pickelbauer
<[email protected]> wrote:
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
Hi Michael
It's a long time since I've looked at the C++ runtime but one thing
does come to mind. Does the schema your loading make references to
things out across the network? I do remember having problems with
libxml going off and trying to retrieve XSD from namespace based URLs
and taking a long time to do it.
Unfortunately I don't have a dev environment set up where I could try
it so I'm guessing.
Regards
Simon