| This utility will give you a good indicator of how fast your system
is. Unlike other "bureaucratic" benchmarks, it has no options
-- run it, and it will start spitting out numbers.
Below are the results of a run on 2x AMD 285 (2.6ghz)
Description of testsQueueUserAPC Tokens/Sec: This test sets up two threads. The first thread queues a user APC to the second thread (this is just a request to the other thread to call a function). The second thread waits for the APC and then sends one to the first thread. This is called token passing, and it measures context switching speed, which is is a very important multiprocessing metric. QueryPerformanceCounter: Pretty much the only method for obtaining high-resolution measurements that counts on Windows. Clear: this just calls memset() in a loop. atof / atoi / ftol: This measures the performance of Microsoft's implementation of certain C runtime library functions (ascii to float, ascii to int, float to int). The functions aren't particularly high-performance (converting "0.1" to a float takes 0.3 microseconds, which is ~300 nanoseconds, or 1,000 clock cycles. SetWaitableTimer / Wait ringing event: This is another important measure of kernel's multitasking ability. CRC32: This is simple integer math with table lookup. Exception throwing / not throwing: Throws and catches an exception in a loop. Not throwing simply sets up a try..catch block but doesn't throw the exception. time(): A C function that implements a 1-second resolution timer. GetSystemTime() / GetLocalTime(): Win32 functions that return current time to within 15ms. malloc/free: Repeatedly allocates a small block of memory and then frees it. Not a multi-threaded test. GetFileAttributes: Tests how quickly file information can be retrieved from the system (if you don't have c:\pagefile.sys, this test measures something else :-) DownloadI see a huge performance difference between 32- and 64-bit versions on Opteron 285s:
Future developmentsI expect to add more tests to this utility as the time goes on, but I promise not to change existing tests (to keep results forever valid). |