Doug,

I mean, if you declare CommAddress constructor explicit, the code will
look like (and what it implicitly is):

comm->connect(CommAddress(addr), ...
comm->close_socket(CommAddress(addr), ...
comm->send_request(CommAddress(addr),  ...
comm->send_response(CommAddress(addr), ...

It is not only passing by value, it is construction of temporary objects.

2010/4/4, Doug Judd <[email protected]>:
> The passing of InetAddr by value is intentional.  The InetAddr structure is
> so small that we (I) deemed it better from a performance standpoint to pass
> by value instead of take the hit of an extra level of indirection introduce
> with a reference.
>
> On Sun, Apr 4, 2010 at 11:47 AM, conferno <[email protected]> wrote:
>
>> Doug,
>>
>> if you take care of performance hit of object copying, the rule "Use
>> the C++ keyword explicit for constructors with one argument." would be
>> your friend as well.
>>
>> There are a lot of places where objects are constructed implicitly.
>> For example, CommAddress out of InetAddr.
>>
>> 2010/4/4, Doug Judd <[email protected]>:
>> > Hi Conferno,
>> >
>> > I agree that this is probably a good rule that we should start adopting.
>>  I
>> > can think of another serious performance bug that was introduced in the
>> past
>> > due to inadvertently making a copy of an object.  I cringe at the
>> > thought
>> of
>> > sweeping through the entire code base and adding that macro to every
>> class.
>> > Maybe we can start with some of the big ones (RangeServer, Range,
>> > AccessGroup, CellStore, etc.) and then slowly introduce it to other
>> classes
>> > over time.  I just filed issue 434 (
>> > http://code.google.com/p/hypertable/issues/detail?id=434) for this one.
>> > Thanks.
>> >
>> > - Doug
>> >
>> > P.S. I don't particularly believe in the 80 column rule.  With C++, 80
>> > columns is inadequate.  It may be a little more doable with C or other
>> terse
>> > languages, but with namespaces, nested namespaces, nested classes, etc.
>> 80
>> > columns is unreasonably small.  Especially given Google's rule of not
>> > allowing the 'using' keyword.  I do try to keep lines under 80 columns,
>> but
>> > if the only way to keep the line under 80 columns is to make it look
>> really
>> > ugly, then I'll break the rule.
>> >
>> > On Fri, Apr 2, 2010 at 9:21 PM, conferno <[email protected]> wrote:
>> >
>> >> Hi
>> >>
>> >> I have seen that you took something from <a
>> >> href="http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
>> >> ">Google
>> >> C++ Style Guide</a>:
>> >>  two-spaces indentation, 80 char line limit, no spaces inside
>> >> parentheses, define guards in headers, using namespaces, ...
>> >>
>> >> What do you thing to take more rules from that document ?
>> >>
>> >> They have right ideas, and also automatic checking tools.
>> >>
>> >> For example <a href="
>> >>
>> http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Copy_Constructors#Copy_Constructors
>> >> ">the
>> >> rule about copy constructors</a> could prevent issue 422.
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> Groups
>> >> "Hypertable Development" group.
>> >> To post to this group, send email to [email protected].
>> >> To unsubscribe from this group, send email to
>> >> [email protected]<hypertable-dev%[email protected]>
>> <hypertable-dev%[email protected]<hypertable-dev%[email protected]>
>> >
>> >> .
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/hypertable-dev?hl=en.
>> >>
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "Hypertable Development" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected]<hypertable-dev%[email protected]>
>> .
>> > For more options, visit this group at
>> > http://groups.google.com/group/hypertable-dev?hl=en.
>> >
>> >
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Hypertable Development" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<hypertable-dev%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/hypertable-dev?hl=en.
>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Hypertable Development" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/hypertable-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en.

Reply via email to