On 1/30/2011 8:14 PM, Littlefield, Tyler wrote:
If you are on windows, you can use high-resolution timers. What you are trying is physically impossible though: lets say you have a processor that runs at 2.5 GHz. that's 2.5 billion cycles per second, give or take a few. So, the lowest you can go is nanoseconds. You're trying to time like 10x the processor's actual speed, and you're not going to get timing that good. so, lower your bar a bit; the highest you will get is nanoseconds with high-res timers. (I'm not sure what the equivalent of this is on *nix, or whether or not python supports it on either platform. I think you'll end up making a DLL call, though I could be wrong).
On x86 CPUs since the Pentium, you can read the CPU's cycle counter, which is incrementing once for each clock cycle, maybe every 300ps or so on a current generation CPU. See "http://en.wikipedia.org/wiki/Time_Stamp_Counter" You do not want to do this. First, you're in Python, which is interpreted; picosecond level timing resolution is orders of magnitude finer than is meaningful at the Python source level. Second, on multiprocessors, each CPU has its own cycle clock, and they're not synchronized. Third, on superscalar CPUs, reading of the clock may occur out of order and be meaningless. In Python, just call "time.time()", which gets you a floating point number with about 1ms resolution. John Nagle -- http://mail.python.org/mailman/listinfo/python-list