Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Is there an overhead in this OO design ?

Author: Dann Corbit

Date: 11:13:07 01/05/06

Go up one level in this thread


On January 05, 2006 at 13:04:29, Mathieu Pagé wrote:

>Hi, I want to push OO to it's limit in order to get cleaner code. Here is what I
>want to do :
>
>
>class CSquare
>   {
>   private:
>      unsigned int m_uiSquareIndex;
>   public :
>      // the next 3 functions allow CSquare to be used as an unsigned int in
>      // arithmetic operations.
>      inline CSquare(unsigned int);
>      inline CSquare operator=(unsigned int);
>      inline operator unsigned int();
>
>      // The next 2 functions are why i'd like to use OOP to make the
>manipulation
>      // of squares clearer.
>      unsigned int GetColumn()
>      {
>         return m_uiSquareIndex % 8;
>      };
>
>      unsigned int GetRow()
>      {
>         return m_uiSquareIndex / 8;
>      };
>   };
>
>
>This way I can use CSquare like this :
>
>
>CSquare csq(A1)
>csq += 8; // One row higher. csq is now equat to A2.
>csq.GetRow(); // Will return 1 (0 based index)
>csq.GetColumn(); // will return 0
>
>
>
>I think that with basic compiler optimisations like inlining this code will
>bring no overhead in my engine. I already asked some friends about it and they
>seem to think like me, but are not sure.
>
>Since it's CC related and there is some good programmers monitoring this board I
>though I would ask here.
>
>What is your opinion about this?
>
>Mathieu Pagé

There may be some tiny benefit to:

      unsigned int GetColumn()
      {
         return m_uiSquareIndex & 7; // Assumes 2's complement.
      }

      unsigned int GetRow()
      {
         return m_uiSquareIndex >> 3; // Assumes m_uiSquareIndex is >= 0
      }

But the compiler may actually do those simple optimizations for you anyway.

I don't see any important overhead in your class.  Things like virtual functions
and RTTI, structured exception handling, etc. add a little bit.

By far, the algorithms chosen are more important than some little details about
using C++ features.



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.