cycling through a number range
11.03.2009 - 21:36 (1 year, 5 months, 4 weeks, 2 days ago)
Filed under programming, .NET, geekdom, mathematics, TrivadisContent, C#
What I really wanted to do was to play a round of quakelive. But right now, quakelive is down (well, it's Beta, isn't it?). Quakelive pointed me to their twitter feed.
Next I wondered what other people are suffering from this outage and went to twitterfall, doing a search on "quake" and "quakelive". I found a completely unrelated entry on some Quake Engine code review of their networking code (sweet) and at the end a cute little piece of code which I wanted to try in C# straight away.
I hesitated, for my home PC has no Visual Studio. Alas, the trusty ol' csc is part of the .NET Framework runtime on Windows and after adding the relevant path to the %PATH% I was happily programming away with Notepad (by now you don't need syntax completion, do you? ;)
With the following code you can count up an index and let it roll over once it hits a limit and start with 0 again. Once you "get" the code you will understand that limit can be any number of the form 2n-1...
int limit = 1; int count = 0;
while (true) {
System.Threading.Thread.Sleep(300);
Console.WriteLine(count);
count = (count + 1) & limit;
}
It really isn't a big deal, but it's a nice reminder of binary arithmetics and if you are a performance geek (insert statement of premature optimization etc. here) you will like the fact that this counter is consistently faster than doing it with a modulo (%) operation. In fact, up to 4ms...repeating it 10'000'000 times. ;)
Comments
while (true) { for (int count = 0; i <= limit; i++;) { System.Threading.Thread.Sleep(300); Console.WriteLine(count); } }Both more readable and faster.