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.
