std::string usage in DataFactoryImpl.cpp allocates/deallocates heap and copys 
memoery too frequently
----------------------------------------------------------------------------------------------------

                 Key: TUSCANY-946
                 URL: http://issues.apache.org/jira/browse/TUSCANY-946
             Project: Tuscany
          Issue Type: Improvement
          Components: C++ SDO
    Affects Versions: Cpp-current
            Reporter: Yang ZHONG
            Priority: Minor


Thanks to Geoffrey Winn and Pete Robbins; see the thread
http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg11015.html(Use 
std::string as an example to discuss object vs. &/* to reduce heap 
allocation/release and memory copying)
for more info.

Here's an example:
 
typedef std::string SDOString;
SDOString DataFactoryImpl::getFullTypeName(const SDOString& uri, const 
SDOString& inTypeName) const
{
  return uri + "#" + inTypeName;
}
void DataFactoryImpl::addType(const char* pccUri, const char* pccTypeName,...) 
{
  SDOString fullTypeName = getFullTypeName(pccUri, pccTypeName);
  ...
}
 
1. getFullTypeName(pccUri,pccTypeName) call will allocate stack for std::string 
instance uri and inTypeName.
   Since a URI is likely longer than 16(see std::string implementation), a 
heap(5-1) piece will be allocated.
   pccUri and pccTypeName will be copied into uri(7-1) and inTypeName(7-2) 
respectively
2. uri+"#" will allocate stack and *heap*(5-2) for a new std::string instance, 
and uri will be copied(7-3)
3. ...+inTypeName will allocate stack and *heap*(5-3) for another new 
std::string instance, and above(2.) std::string(7-4) and inTypeName(7-5) will 
be copied
4. getFullTypeName return will allocate stack and *heap*(5-4) for yet another 
new std::string instance, and return value will be copied(7-6)
5. The assignment to local variable fullTypeName, will allocate stack and 
*heap*(5-5) for one more new std::string instance, and value will be copied(7-7)
 
It's too frequent that simple 2 lines of code allocate/deallocate heap *five* 
times and copy memory *seven* times.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to