This is what was intended. Are you suggesting that there is a more efficient way to do this (InetAddr -> CommAddress -> Comm::method) ? Or are you just suggesting that implicit object construction is bad?
- Doug On Sun, Apr 4, 2010 at 12:51 PM, conferno <[email protected]> wrote: > 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]> > > > >> <hypertable-dev%[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]> > <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]> > <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.
