74 lines
2 KiB
Text
74 lines
2 KiB
Text
|
|
------------
|
|
Benchmarking
|
|
------------
|
|
There is a set a benchmarking programs in the
|
|
"tests" directory. These should be runnable using the
|
|
following command-lines corresponding to each of the possible
|
|
library builds:
|
|
|
|
MSVC:
|
|
nmake clean VC-bench
|
|
nmake clean VCE-bench
|
|
nmake clean VSE-bench
|
|
|
|
Mingw32:
|
|
make clean GC-bench
|
|
make clean GCE-bench
|
|
|
|
UWIN:
|
|
The benchtests are run as part of the testsuite.
|
|
|
|
|
|
Mutex benchtests
|
|
----------------
|
|
|
|
benchtest1 - Lock plus unlock on an unlocked mutex.
|
|
benchtest2 - Lock plus unlock on a locked mutex.
|
|
benchtest3 - Trylock on a locked mutex.
|
|
benchtest4 - Trylock plus unlock on an unlocked mutex.
|
|
|
|
|
|
Each test times up to three alternate synchronisation
|
|
implementations as a reference, and then times each of
|
|
the four mutex types provided by the library. Each is
|
|
described below:
|
|
|
|
Simple Critical Section
|
|
- uses a simple Win32 critical section. There is no
|
|
additional overhead for this case as there is in the
|
|
remaining cases.
|
|
|
|
POSIX mutex implemented using a Critical Section
|
|
- The old implementation which uses runtime adaptation
|
|
depending on the Windows variant being run on. When
|
|
the pthreads DLL was run on WinNT or higher then
|
|
POSIX mutexes would use Win32 Critical Sections.
|
|
|
|
POSIX mutex implemented using a Win32 Mutex
|
|
- The old implementation which uses runtime adaptation
|
|
depending on the Windows variant being run on. When
|
|
the pthreads DLL was run on Win9x then POSIX mutexes
|
|
would use Win32 Mutexes (because TryEnterCriticalSection
|
|
is not implemented on Win9x).
|
|
|
|
PTHREAD_MUTEX_DEFAULT
|
|
PTHREAD_MUTEX_NORMAL
|
|
PTHREAD_MUTEX_ERRORCHECK
|
|
PTHREAD_MUTEX_RECURSIVE
|
|
- The current implementation supports these mutex types.
|
|
The underlying basis of POSIX mutexes is now the same
|
|
irrespective of the Windows variant, and should therefore
|
|
have consistent performance.
|
|
|
|
|
|
Semaphore benchtests
|
|
--------------------
|
|
|
|
benchtest5 - Timing for various uncontended cases.
|
|
|
|
|
|
In all benchtests, the operation is repeated a large
|
|
number of times and an average is calculated. Loop
|
|
overhead is measured and subtracted from all test times.
|
|
|