I started working with C # a few weeks ago, and now I'm in a situation where I need to create a bit-bit flag to handle various cases in the algorithm. I have two options:
enum RelativePositioning { LEFT = 0, RIGHT = 1, BOTTOM = 2, TOP = 3, FRONT = 4, BACK = 5 } pos = ((eye.X < minCorner.X ? 1 : 0) << (int) RelativePositioning.LEFT) + ((eye.X > maxCorner.X ? 1 : 0) << (int) RelativePositioning.RIGHT) + ((eye.Y < minCorner.Y ? 1 : 0) << (int) RelativePositioning.BOTTOM) + ((eye.Y > maxCorner.Y ? 1 : 0) << (int) RelativePositioning.TOP) + ((eye.Z < minCorner.Z ? 1 : 0) << (int) RelativePositioning.FRONT) + ((eye.Z > maxCorner.Z ? 1 : 0) << (int) RelativePositioning.BACK);
Or:
enum RelativePositioning { LEFT = 1, RIGHT = 2, BOTTOM = 4, TOP = 8, FRONT = 16, BACK = 32 } if (eye.X < minCorner.X) { pos += (int) RelativePositioning.LEFT; } if (eye.X > maxCorner.X) { pos += (int) RelativePositioning.RIGHT; } if (eye.Y < minCorner.Y) { pos += (int) RelativePositioning.BOTTOM; } if (eye.Y > maxCorner.Y) { pos += (int) RelativePositioning.TOP; } if (eye.Z > maxCorner.Z) { pos += (int) RelativePositioning.FRONT; } if (eye.Z < minCorner.Z) { pos += (int) RelativePositioning.BACK; }
I could use something like ((eye.X > maxCorner.X) << 1) , but C # does not allow implicit casting from bool to int, and the ternary operator was pretty similar. Now my question is: is there a performance improvement when using the first version for the second?
Thanks,
Tommaso
performance c # bit-manipulation int
tunnuz
source share