--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/benchmarks/micro/BenchmarkLocking.st Mon Aug 28 21:41:34 2017 +0100
@@ -0,0 +1,170 @@
+"{ Package: 'jv:calipel/s/benchmarks/micro' }"
+
+"{ NameSpace: Smalltalk }"
+
+Benchmark subclass:#BenchmarkLocking
+ instanceVariableNames:'nesting threads lock'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Benchmarks-Micro'
+!
+
+!BenchmarkLocking class methodsFor:'queries'!
+
+isAbstract
+ "Return if this class is an abstract class.
+ True is returned here for myself only; false for subclasses.
+ Abstract subclasses must redefine this again."
+
+ ^ self == BenchmarkLocking.
+! !
+
+!BenchmarkLocking methodsFor:'benchmarks'!
+
+benchmarkCritical
+ <benchmark: '#critical:'>
+
+ | blocker iterations body |
+
+ nesting isNil ifTrue:[ nesting := 1 ].
+ iterations := 10000000.
+ blocker := Semaphore new: (threads - 1) negated.
+ body := [
+ iterations timesRepeat:[ self workloadCritical: nesting ].
+ blocker signal.
+ ].
+ 1 to: threads do:[:i |
+ | t |
+
+ t := body newProcess.
+ t name: 'Benchmark ''', self class name, ' >> #critical:'', thread ', i printString.
+ t resume.
+ ].
+ blocker wait.
+
+ "
+ BenchmarkRecursionLock run: #benchmarkCritical.
+ BenchmarkSemaphore run: #benchmarkCritical
+ "
+
+ "Created: / 25-08-2017 / 08:46:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:32:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+!
+
+benchmarkCriticalN
+ <benchmark: '#critical: (no work)'>
+
+ | blocker iterations body |
+
+ nesting isNil ifTrue:[ nesting := 1 ].
+ iterations := 10000000.
+ blocker := Semaphore new: (threads - 1) negated.
+ body := [
+ iterations timesRepeat:[ self justpureCritical: nesting ].
+ blocker signal.
+ ].
+ 1 to: threads do:[:i |
+ | t |
+
+ t := body newProcess.
+ t name: 'Benchmark ''', self class name, ' >> #critical:'', thread ', i printString.
+ t resume.
+ ].
+ blocker wait.
+
+ "
+ BenchmarkRecursionLock run: #benchmarkCritical.
+ BenchmarkSemaphore run: #benchmarkCritical
+ "
+
+ "Created: / 25-08-2017 / 08:46:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:32:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+!
+
+
+benchmarkBase
+ <benchmark: 'workload (no locks)'>
+
+ | blocker iterations body |
+
+ nesting isNil ifTrue:[ nesting := 1 ].
+ iterations := 10000000.
+ blocker := Semaphore new: (threads - 1) negated.
+ body := [
+ iterations timesRepeat:[ self workloadBase: nesting ].
+ blocker signal.
+ ].
+ 1 to: threads do:[:i |
+ | t |
+
+ t := body newProcess.
+ t name: 'Benchmark ''', self class name, ' >> benchmarkBase, thread ', i printString.
+ t resume.
+ ].
+ blocker wait.
+
+ "
+ BenchmarkRecursionLock run: #benchmarkCritical.
+ BenchmarkSemaphore run: #benchmarkCritical
+ "
+
+ "Created: / 25-08-2017 / 08:46:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:32:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+! !
+
+!BenchmarkLocking methodsFor:'parameters'!
+
+threads: anInteger
+ <parameter: #threads type: #Integer values: #(1 2 5)>
+ threads := anInteger.
+
+ "Created: / 25-08-2017 / 08:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkLocking methodsFor:'private'!
+
+justpureCritical: n
+ lock critical:[
+ n > 1 ifTrue:[
+ self justpureCritical: n - 1.
+ ].
+ ].
+
+ "Created: / 25-08-2017 / 08:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:29:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+
+workloadCritical: n
+ lock critical:[
+ self doSomeWork.
+ n > 1 ifTrue:[
+ self workloadCritical: n - 1.
+ ].
+ ].
+
+ "Created: / 25-08-2017 / 08:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:29:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+workloadBase: n
+ self doSomeWork.
+ n > 1 ifTrue:[
+ self workloadBase: n - 1.
+ ].
+
+ "Created: / 25-08-2017 / 08:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:29:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+!
+
+doSomeWork
+ 1 perform: #+ with: 1
+
+ "Created: / 25-08-2017 / 09:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:11:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/s/benchmarks/micro/BenchmarkMicro.st Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/BenchmarkMicro.st Mon Aug 28 21:41:34 2017 +0100
@@ -1,5 +1,7 @@
"{ Package: 'jv:calipel/s/benchmarks/micro' }"
+"{ NameSpace: Smalltalk }"
+
Object subclass:#BenchmarkMicro
instanceVariableNames:'iterations stream hello table ary1 ary2'
classVariableNames:''
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/benchmarks/micro/BenchmarkRecursionLock.st Mon Aug 28 21:41:34 2017 +0100
@@ -0,0 +1,42 @@
+"{ Package: 'jv:calipel/s/benchmarks/micro' }"
+
+"{ NameSpace: Smalltalk }"
+
+BenchmarkLocking subclass:#BenchmarkRecursionLock
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Benchmarks-Micro'
+!
+
+
+!BenchmarkRecursionLock methodsFor:'parameters'!
+
+nesting: anInteger
+ <parameter: #nesting type: #Integer values: #(1 2 5 10)>
+ nesting := anInteger.
+
+ "Modified (format): / 28-08-2017 / 21:11:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkRecursionLock methodsFor:'running'!
+
+setUp
+ <setup>
+ (Smalltalk includesKey: #RecursionLock) ifTrue:[
+ lock := RecursionLock new.
+ ] ifFalse:[
+ lock := Monitor new
+ ].
+
+ "Created: / 25-08-2017 / 08:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:24:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BenchmarkRecursionLock class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/benchmarks/micro/BenchmarkSemaphore.st Mon Aug 28 21:41:34 2017 +0100
@@ -0,0 +1,21 @@
+"{ Package: 'jv:calipel/s/benchmarks/micro' }"
+
+"{ NameSpace: Smalltalk }"
+
+BenchmarkLocking subclass:#BenchmarkSemaphore
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'CalipeL-S-Benchmarks-Micro'
+!
+
+!BenchmarkSemaphore methodsFor:'running'!
+
+setUp
+ <setup>
+ lock := Semaphore forMutualExclusion.
+
+ "Created: / 25-08-2017 / 08:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 28-08-2017 / 21:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/s/benchmarks/micro/Make.proto Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/Make.proto Mon Aug 28 21:41:34 2017 +0100
@@ -101,12 +101,13 @@
# build all mandatory prerequisite packages (containing superclasses) for this package
prereq:
- cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ cd ../../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
# build all packages containing referenced classes for this package
-# they are nor needed to compile the package
+# they are not needed to compile the package (but later, to load it)
references:
@@ -121,10 +122,13 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)BenchmarkMicroStringConcat.$(O) BenchmarkMicroStringConcat.$(H): BenchmarkMicroStringConcat.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)BenchmarkMicroStringConcatN.$(O) BenchmarkMicroStringConcatN.$(H): BenchmarkMicroStringConcatN.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)BenchmarkPerform.$(O) BenchmarkPerform.$(H): BenchmarkPerform.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)jv_calipel_s_benchmarks_micro.$(O) jv_calipel_s_benchmarks_micro.$(H): jv_calipel_s_benchmarks_micro.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkLocking.$(O) BenchmarkLocking.$(C) BenchmarkLocking.$(H): BenchmarkLocking.st $(INCLUDE_TOP)/jv/calipel/s/Benchmark.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMicroStringConcat.$(O) BenchmarkMicroStringConcat.$(C) BenchmarkMicroStringConcat.$(H): BenchmarkMicroStringConcat.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMicroStringConcatN.$(O) BenchmarkMicroStringConcatN.$(C) BenchmarkMicroStringConcatN.$(H): BenchmarkMicroStringConcatN.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkPerform.$(O) BenchmarkPerform.$(C) BenchmarkPerform.$(H): BenchmarkPerform.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)jv_calipel_s_benchmarks_micro.$(O) jv_calipel_s_benchmarks_micro.$(C) jv_calipel_s_benchmarks_micro.$(H): jv_calipel_s_benchmarks_micro.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkRecursionLock.$(O) BenchmarkRecursionLock.$(C) BenchmarkRecursionLock.$(H): BenchmarkRecursionLock.st $(INCLUDE_TOP)/jv/calipel/s/Benchmark.$(H) $(INCLUDE_TOP)/jv/calipel/s/benchmarks/micro/BenchmarkLocking.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkSemaphore.$(O) BenchmarkSemaphore.$(C) BenchmarkSemaphore.$(H): BenchmarkSemaphore.st $(INCLUDE_TOP)/jv/calipel/s/Benchmark.$(H) $(INCLUDE_TOP)/jv/calipel/s/benchmarks/micro/BenchmarkLocking.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/s/benchmarks/micro/Make.spec Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/Make.spec Mon Aug 28 21:41:34 2017 +0100
@@ -22,7 +22,7 @@
# (if removed, they will be created as common
# -Pxxx : defines the package
# -Zxxx : a prefix for variables within the classLib
-# -Dxxx : defines passed to to CC for inline C-code
+# -Dxxx : defines passed to CC for inline C-code
# -Ixxx : include path passed to CC for inline C-code
# +optspace : optimized for space
# +optspace2 : optimized more for space
@@ -51,19 +51,25 @@
STCWARNINGS=-warnNonStandard
COMMON_CLASSES= \
+ BenchmarkLocking \
BenchmarkMicroStringConcat \
BenchmarkMicroStringConcatN \
BenchmarkPerform \
jv_calipel_s_benchmarks_micro \
+ BenchmarkRecursionLock \
+ BenchmarkSemaphore \
COMMON_OBJS= \
- $(OUTDIR_SLASH)BenchmarkMicroStringConcat.$(O) \
- $(OUTDIR_SLASH)BenchmarkMicroStringConcatN.$(O) \
- $(OUTDIR_SLASH)BenchmarkPerform.$(O) \
- $(OUTDIR_SLASH)jv_calipel_s_benchmarks_micro.$(O) \
+ $(OUTDIR)BenchmarkLocking.$(O) \
+ $(OUTDIR)BenchmarkMicroStringConcat.$(O) \
+ $(OUTDIR)BenchmarkMicroStringConcatN.$(O) \
+ $(OUTDIR)BenchmarkPerform.$(O) \
+ $(OUTDIR)jv_calipel_s_benchmarks_micro.$(O) \
+ $(OUTDIR)BenchmarkRecursionLock.$(O) \
+ $(OUTDIR)BenchmarkSemaphore.$(O) \
--- a/s/benchmarks/micro/abbrev.stc Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/abbrev.stc Mon Aug 28 21:41:34 2017 +0100
@@ -1,8 +1,11 @@
# automagically generated by the project definition
# this file is needed for stc to be able to compile modules independently.
# it provides information about a classes filename, category and especially namespace.
-BenchmarkMicro BenchmarkMicro jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
+BenchmarkLocking BenchmarkLocking jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
BenchmarkMicroStringConcat BenchmarkMicroStringConcat jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
BenchmarkMicroStringConcatN BenchmarkMicroStringConcatN jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
BenchmarkPerform BenchmarkPerform jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
jv_calipel_s_benchmarks_micro jv_calipel_s_benchmarks_micro jv:calipel/s/benchmarks/micro '* Projects & Packages *' 3
+BenchmarkRecursionLock BenchmarkRecursionLock jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
+BenchmarkSemaphore BenchmarkSemaphore jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
+BenchmarkMicro BenchmarkMicro jv:calipel/s/benchmarks/micro 'CalipeL-S-Benchmarks-Micro' 0
--- a/s/benchmarks/micro/bc.mak Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/bc.mak Mon Aug 28 21:41:34 2017 +0100
@@ -31,7 +31,7 @@
LIBNAME=libjv_calipel_s_benchmarks_micro
MODULE_PATH=calipel\s\benchmarks\micro
-RESFILES=micro.$(RES)
+RESFILES=jv_calipel_s_benchmarks_microWINrc.$(RES)
@@ -52,6 +52,7 @@
# build all mandatory prerequisite packages (containing superclasses) for this package
prereq:
pushd ..\..\..\..\..\stx\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\.. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -64,14 +65,17 @@
$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
clean::
- del *.$(CSUFFIX)
+ -del *.$(CSUFFIX)
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
-$(OUTDIR)BenchmarkMicroStringConcat.$(O) BenchmarkMicroStringConcat.$(H): BenchmarkMicroStringConcat.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)BenchmarkMicroStringConcatN.$(O) BenchmarkMicroStringConcatN.$(H): BenchmarkMicroStringConcatN.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)BenchmarkPerform.$(O) BenchmarkPerform.$(H): BenchmarkPerform.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)jv_calipel_s_benchmarks_micro.$(O) jv_calipel_s_benchmarks_micro.$(H): jv_calipel_s_benchmarks_micro.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkLocking.$(O) BenchmarkLocking.$(C) BenchmarkLocking.$(H): BenchmarkLocking.st $(INCLUDE_TOP)\jv\calipel\s\Benchmark.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMicroStringConcat.$(O) BenchmarkMicroStringConcat.$(C) BenchmarkMicroStringConcat.$(H): BenchmarkMicroStringConcat.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkMicroStringConcatN.$(O) BenchmarkMicroStringConcatN.$(C) BenchmarkMicroStringConcatN.$(H): BenchmarkMicroStringConcatN.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkPerform.$(O) BenchmarkPerform.$(C) BenchmarkPerform.$(H): BenchmarkPerform.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)jv_calipel_s_benchmarks_micro.$(O) jv_calipel_s_benchmarks_micro.$(C) jv_calipel_s_benchmarks_micro.$(H): jv_calipel_s_benchmarks_micro.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkRecursionLock.$(O) BenchmarkRecursionLock.$(C) BenchmarkRecursionLock.$(H): BenchmarkRecursionLock.st $(INCLUDE_TOP)\jv\calipel\s\Benchmark.$(H) $(INCLUDE_TOP)\jv\calipel\s\benchmarks\micro\BenchmarkLocking.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)BenchmarkSemaphore.$(O) BenchmarkSemaphore.$(C) BenchmarkSemaphore.$(H): BenchmarkSemaphore.st $(INCLUDE_TOP)\jv\calipel\s\Benchmark.$(H) $(INCLUDE_TOP)\jv\calipel\s\benchmarks\micro\BenchmarkLocking.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/s/benchmarks/micro/bmake.bat Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/bmake.bat Mon Aug 28 21:41:34 2017 +0100
@@ -7,6 +7,9 @@
@REM Kludge got Mercurial, cannot be implemented in Borland make
@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
make.exe -N -f bc.mak %DEFINES% %*
+
+
--- a/s/benchmarks/micro/jv_calipel_s_benchmarks_micro.st Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/jv_calipel_s_benchmarks_micro.st Mon Aug 28 21:41:34 2017 +0100
@@ -1,5 +1,7 @@
"{ Package: 'jv:calipel/s/benchmarks/micro' }"
+"{ NameSpace: Smalltalk }"
+
LibraryDefinition subclass:#jv_calipel_s_benchmarks_micro
instanceVariableNames:''
classVariableNames:''
@@ -24,9 +26,11 @@
are extended by myself.
They are mandatory, because we need these packages as a prerequisite for loading and compiling.
This method is generated automatically,
- by searching along the inheritance chain of all of my classes."
+ by searching along the inheritance chain of all of my classes.
+ Please take a look at the #referencedPreRequisites method as well."
^ #(
+ #'jv:calipel/s' "Benchmark - superclass of BenchmarkLocking"
#'stx:libbasic' "LibraryDefinition - superclass of jv_calipel_s_benchmarks_micro"
)
!
@@ -34,12 +38,15 @@
referencedPreRequisites
"list packages which are a prerequisite, because they contain
classes which are referenced by my classes.
- We do not need these packages as a prerequisite for loading or compiling.
+ These packages are NOT needed as a prerequisite for compiling or loading,
+ however, a class from it may be referenced during execution and having it
+ unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
+ includes explicit checks for the package being present.
This method is generated automatically,
- by searching all classes (and their packages) which are referenced by my classes."
+ by searching all classes (and their packages) which are referenced by my classes.
+ Please also take a look at the #mandatoryPreRequisites method"
^ #(
- #'jv:calipel/s' "BenchmarkInstance - referenced by BenchmarkMicro class>>run:"
#'stx:libbasic2' "Random - referenced by BenchmarkPerform class>>initialize"
)
!
@@ -76,17 +83,22 @@
^ #(
"<className> or (<className> attributes...) in load order"
- (BenchmarkMicro autoload)
+ BenchmarkLocking
BenchmarkMicroStringConcat
BenchmarkMicroStringConcatN
BenchmarkPerform
#'jv_calipel_s_benchmarks_micro'
+ BenchmarkRecursionLock
+ BenchmarkSemaphore
+ (BenchmarkMicro autoload)
)
!
extensionMethodNames
- "list class/selector pairs of extensions.
- A correponding method with real names must be present in my concrete subclasses"
+ "lists the extension methods which are to be included in the project.
+ Entries are 2-element array literals, consisting of class-name and selector.
+ A correponding method with real names must be present in my concrete subclasses
+ if it has extensions."
^ #(
)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/s/benchmarks/micro/jv_calipel_s_benchmarks_microWINrc.rc Mon Aug 28 21:41:34 2017 +0100
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: jv_calipel_s_benchmarks_micro.
+//
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 6,2,32767,32767
+ PRODUCTVERSION 6,2,6,0
+#if (__BORLANDC__)
+ FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
+ FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VS_USER_DEFINED
+#endif
+
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ BEGIN
+ VALUE "CompanyName", "My Company\0"
+ VALUE "FileDescription", "Class Library (LIB)\0"
+ VALUE "FileVersion", "6.2.32767.32767\0"
+ VALUE "InternalName", "jv:calipel/s/benchmarks/micro\0"
+ VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
+ VALUE "ProductName", "LibraryName\0"
+ VALUE "ProductVersion", "6.2.6.0\0"
+ VALUE "ProductDate", "Mon, 28 Aug 2017 20:40:35 GMT\0"
+ END
+
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN // Language | Translation
+ VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+ END
+END
--- a/s/benchmarks/micro/libInit.cc Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/libInit.cc Mon Aug 28 21:41:34 2017 +0100
@@ -16,22 +16,35 @@
DLL_EXPORT void _libjv_calipel_s_benchmarks_micro_InitDefinition() INIT_TEXT_SECTION;
#endif
-void _libjv_calipel_s_benchmarks_micro_InitDefinition(pass, __pRT__, snd)
-OBJ snd; struct __vmData__ *__pRT__; {
-__BEGIN_PACKAGE2__("libjv_calipel_s_benchmarks_micro__DFN", _libjv_calipel_s_benchmarks_micro_InitDefinition, "jv:calipel/s/benchmarks/micro");
-_jv_137calipel_137s_137benchmarks_137micro_Init(pass,__pRT__,snd);
+extern void _BenchmarkLocking_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _BenchmarkMicroStringConcat_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _BenchmarkMicroStringConcatN_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _BenchmarkPerform_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _jv_137calipel_137s_137benchmarks_137micro_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _BenchmarkRecursionLock_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _BenchmarkSemaphore_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-__END_PACKAGE__();
+
+
+void _libjv_calipel_s_benchmarks_micro_InitDefinition(int pass, struct __vmData__ *__pRT__, OBJ snd)
+{
+ __BEGIN_PACKAGE2__("libjv_calipel_s_benchmarks_micro__DFN", _libjv_calipel_s_benchmarks_micro_InitDefinition, "jv:calipel/s/benchmarks/micro");
+ _jv_137calipel_137s_137benchmarks_137micro_Init(pass,__pRT__,snd);
+
+ __END_PACKAGE__();
}
-void _libjv_calipel_s_benchmarks_micro_Init(pass, __pRT__, snd)
-OBJ snd; struct __vmData__ *__pRT__; {
-__BEGIN_PACKAGE2__("libjv_calipel_s_benchmarks_micro", _libjv_calipel_s_benchmarks_micro_Init, "jv:calipel/s/benchmarks/micro");
-_BenchmarkMicroStringConcat_Init(pass,__pRT__,snd);
-_BenchmarkMicroStringConcatN_Init(pass,__pRT__,snd);
-_BenchmarkPerform_Init(pass,__pRT__,snd);
-_jv_137calipel_137s_137benchmarks_137micro_Init(pass,__pRT__,snd);
+void _libjv_calipel_s_benchmarks_micro_Init(int pass, struct __vmData__ *__pRT__, OBJ snd)
+{
+ __BEGIN_PACKAGE2__("libjv_calipel_s_benchmarks_micro", _libjv_calipel_s_benchmarks_micro_Init, "jv:calipel/s/benchmarks/micro");
+ _BenchmarkLocking_Init(pass,__pRT__,snd);
+ _BenchmarkMicroStringConcat_Init(pass,__pRT__,snd);
+ _BenchmarkMicroStringConcatN_Init(pass,__pRT__,snd);
+ _BenchmarkPerform_Init(pass,__pRT__,snd);
+ _jv_137calipel_137s_137benchmarks_137micro_Init(pass,__pRT__,snd);
+ _BenchmarkRecursionLock_Init(pass,__pRT__,snd);
+ _BenchmarkSemaphore_Init(pass,__pRT__,snd);
-__END_PACKAGE__();
+ __END_PACKAGE__();
}
--- a/s/benchmarks/micro/mingwmake.bat Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/mingwmake.bat Mon Aug 28 21:41:34 2017 +0100
@@ -14,3 +14,5 @@
make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
+
+
--- a/s/benchmarks/micro/vcmake.bat Mon Mar 21 23:47:50 2016 +0100
+++ b/s/benchmarks/micro/vcmake.bat Mon Aug 28 21:41:34 2017 +0100
@@ -13,6 +13,8 @@
@REM Kludge got Mercurial, cannot be implemented in Borland make
@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+
+
make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*