75 lines
2 KiB
Text
75 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.
|
||
|
|