* *
% remove brandings and homepage [1] from copyright header. Pass 1 - using script.
[1] nobody has access to it anymore AFAIK - and it's also just
a redirect since long
! update url in copyright header
; this should make the diff between 3.4 and 3.2 easier to manage
106 lines
2.1 KiB
Plaintext
106 lines
2.1 KiB
Plaintext
/*
|
|
* a small memory manager test code
|
|
*/
|
|
|
|
#include "simpleio.ch"
|
|
|
|
#define N_LOOPS 100000
|
|
|
|
#ifdef __HARBOUR__
|
|
#include "hbmemory.ch"
|
|
#endif
|
|
|
|
PROCEDURE Main()
|
|
|
|
LOCAL nCPUSec, nRealSec, i, a
|
|
|
|
#ifdef __HARBOUR__
|
|
|
|
IF Memory( HB_MEM_USEDMAX ) != 0
|
|
?
|
|
? "Warning !!! Memory statistics enabled."
|
|
ENDIF
|
|
#endif
|
|
?
|
|
? Date(), Time(), Version() + build_mode() + ", " + OS()
|
|
|
|
?
|
|
? "testing single large memory blocks allocation and freeing..."
|
|
nRealSec := Seconds()
|
|
nCPUSec := hb_SecondsCPU()
|
|
FOR i := 1 TO N_LOOPS
|
|
a := Space( 50000 )
|
|
NEXT
|
|
a := NIL
|
|
nCPUSec := hb_SecondsCPU() - nCPUSec
|
|
nRealSec := Seconds() - nRealSec
|
|
? " CPU time:", nCPUSec, "sec."
|
|
? "real time:", nRealSec, "sec."
|
|
|
|
?
|
|
? "testing many large memory blocks allocation and freeing..."
|
|
nRealSec := Seconds()
|
|
nCPUSec := hb_SecondsCPU()
|
|
a := Array( 100 )
|
|
FOR i := 1 TO N_LOOPS
|
|
a[ i % 100 + 1 ] := Space( 50000 )
|
|
IF i % 200 == 0
|
|
AFill( a, "" )
|
|
ENDIF
|
|
NEXT
|
|
a := NIL
|
|
nCPUSec := hb_SecondsCPU() - nCPUSec
|
|
nRealSec := Seconds() - nRealSec
|
|
? " CPU time:", nCPUSec, "sec."
|
|
? "real time:", nRealSec, "sec."
|
|
|
|
?
|
|
? "testing large memory block reallocation with intermediate allocations..."
|
|
? "Warning!!! some compilers may badly fail here"
|
|
WAIT
|
|
|
|
nRealSec := Seconds()
|
|
nCPUSec := hb_SecondsCPU()
|
|
a := {}
|
|
FOR i := 1 TO N_LOOPS
|
|
AAdd( a, {} )
|
|
IF i % 1000 == 0
|
|
?? i
|
|
ENDIF
|
|
NEXT
|
|
nCPUSec := hb_SecondsCPU() - nCPUSec
|
|
nRealSec := Seconds() - nRealSec
|
|
? " CPU time:", nCPUSec, "sec."
|
|
? "real time:", nRealSec, "sec."
|
|
WAIT
|
|
|
|
RETURN
|
|
|
|
FUNCTION build_mode()
|
|
#ifdef __CLIP__
|
|
RETURN " (MT)"
|
|
#else
|
|
#ifdef __XHARBOUR__
|
|
RETURN iif( hb_MultiThread(), " (MT)", "" ) + ;
|
|
iif( Memory( HB_MEM_USEDMAX ) != 0, " (FMSTAT)", "" )
|
|
#else
|
|
#ifdef __HARBOUR__
|
|
RETURN iif( hb_mtvm(), " (MT)", "" ) + ;
|
|
iif( Memory( HB_MEM_USEDMAX ) != 0, " (FMSTAT)", "" )
|
|
#else
|
|
#ifdef __XPP__
|
|
RETURN " (MT)"
|
|
#else
|
|
RETURN ""
|
|
#endif
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#if __HARBOUR__ < 0x010100
|
|
|
|
FUNCTION hb_mtvm()
|
|
RETURN .F.
|
|
|
|
#endif
|