Author: José Carlos
Date: 13:35:09 01/05/06
Go up one level in this thread
On January 05, 2006 at 14:47:09, Mathieu Pagé wrote:
>On January 05, 2006 at 14:13:07, Dann Corbit wrote:
>
>>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.
Apart from what Dann said, I'd like to suggest something like:
csq.GetOneRowHigher();
And then implement the += 8 operation inside the function.
José C.
>>>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.
>
>Hi Dann, thanks for your answer,
>
>I did some test and it seem there is no overhead to my class, at least in my
>simple test function.
>
>I know that the algorithms are more important than micro-optimisations, but I
>just like thoses little hack that give a 0.01% performance boost to my engine.
>Not that they are usefull performance amelioration, but I like to tweak code and
>do micro optimisations. Hey ! CC programming is a hobby after all :)
>
>I also looked at the two optimizations you provide for the modulo and division,
>my compiler seem to do them for me and I think any other decent compiler will
>do.
>
>Mathieu Pagé
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.