benchmarks/JavaBenchmarkClassLoader.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 18 Mar 2017 22:18:19 +0000
changeset 3771 f488375df1c3
parent 3625 ad5f53826f0e
permissions -rw-r--r--
Issue #94 [4/x]: Added some benchmarks for thinlocks

"{ Package: 'stx:libjava/benchmarks' }"

"{ NameSpace: Smalltalk }"

Object subclass:#JavaBenchmarkClassLoader
	instanceVariableNames:'booted rt_dot_jar groovy_all_X_Y_dot_jar saxon_A_B_C_D_dot_jar
		classfiles1 classfiles2 classfiles3'
	classVariableNames:''
	poolDictionaries:''
	category:'Benchmarks-Java'
!


!JavaBenchmarkClassLoader class methodsFor:'running'!

run
    ^ (BenchmarkSuite class:self) run

    "Created: / 10-06-2013 / 21:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

run: benchmark
    ^ (BenchmarkInstance class:self selector:benchmark) run

    "Created: / 31-05-2013 / 10:39:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 10-06-2013 / 21:53:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

spy: benchmark
    ^ (BenchmarkInstance class:self selector:benchmark) spy

    "Created: / 21-05-2014 / 10:57:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!JavaBenchmarkClassLoader methodsFor:'benchmarks'!

groovy3plus4
    <benchmark: 'Groovy 3 + 4'>

    (Java classForName:'stx.libjava.benchmarks.Groovy') new runBenchmarkJ: 1

    "Created: / 09-04-2015 / 23:26:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 20-09-2016 / 00:29:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

saxon
    <benchmark: 'Saxon'>

    (Java classForName:'stx.libjava.benchmarks.Saxon') new runBenchmarkJ: 1

    "Created: / 11-04-2015 / 17:27:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 20-09-2016 / 00:29:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (format): / 20-09-2016 / 09:08:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!JavaBenchmarkClassLoader methodsFor:'running'!

setUp
    <setup>

    | bundle lib archive |

    booted := JavaVM booted.

    booted ifTrue:[
        Smalltalk isStandAloneApp ifFalse:[
            Display notNil ifTrue:[
                (Dialog confirm: 'Java has to be rebooted in order to run a JavaClassReader benchmark. Reboot?') ifFalse:[
                    AbortOperationRequest raise.
                    self error:'Abort benchmark'.
                    ^ self.
                ].
            ].
        ].
        booted := false.
        JavaVM reboot.
    ] ifFalse:[
        JavaVM boot.
    ].


    bundle := (Smalltalk at:#'stx_libjava') javaBundle.
    lib := bundle allLibraries detect:[:each | each name startsWith: 'groovy-all' ] ifNone:[ self error: 'Cannot find Groovy .jar' ].
    groovy_all_X_Y_dot_jar := lib classes.

    Smalltalk loadPackage: 'stx:libjava/libs'.
    bundle := (Smalltalk at:#'stx_libjava_libs') javaBundle.
    lib := bundle allLibraries detect:[:each | each name startsWith: 'saxon' ] ifNone:[ self error: 'Cannot find Saxon .jar' ].
    saxon_A_B_C_D_dot_jar := lib classes.

    Smalltalk loadPackage: 'stx:libjava/libs'.
    bundle := Java release javaBundle.
    lib := bundle allLibraries detect:[:each | each name startsWith: 'rt.jar' ] ifNone:[ self error: 'Cannot find rt.jar' ].
    rt_dot_jar := lib classes.

    archive := ZipArchive oldFileNamed: rt_dot_jar.
    classfiles1 := #(
        'java/lang/Object.class'
        'java/lang/String.class'
        'java/lang/System.class'
        'java/lang/Class.class'
        'java/lang/ClassLoader.class'
    ) collect:[:each |  archive extract: each ] .

    classfiles2 := #(
        'java/util/Map.class'
        'java/util/List.class'
        'java/util/Collection.class'
    ) collect:[:each |  archive extract: each ].

    classfiles3 := #(
        'java/util/Vector.class'
        'java/util/ArrayList.class'
        'java/util/HashMap.class'
        'java/util/HashSet.class'
    ) collect:[:each |  archive extract: each ].

    "Created: / 21-05-2014 / 11:24:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 20-09-2016 / 00:28:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

tearDown
    <teardown>

    booted ifFalse:[
        Java flushAllJavaResources.
    ].
    ObjectMemory garbageCollect.

    "Created: / 21-05-2014 / 11:29:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!JavaBenchmarkClassLoader class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !