1 # Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. 2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 # 4 # This code is free software; you can redistribute it and/or modify it 5 # under the terms of the GNU General Public License version 2 only, as 6 # published by the Free Software Foundation. 7 # 8 # This code is distributed in the hope that it will be useful, but WITHOUT 9 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 11 # version 2 for more details (a copy is included in the LICENSE file that 12 # accompanied this code). 13 # 14 # You should have received a copy of the GNU General Public License version 15 # 2 along with this work; if not, write to the Free Software Foundation, 16 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 17 # 18 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 19 # or visit www.oracle.com if you need additional information or have any 20 # questions. 21 22 # Make a digest of bench.20250930.txt, etc, to be cut-and-pasted into ../../../../../README.md 23 # 24 # Example: 25 # tclsh digest.tcl bench.20250930.txt 26 27 set group { 28 helidon-quickstart-se "Helidon Quick Start" 29 javac_bench "JavacBenchApp 50 source files" 30 micronaut-first-app "Micronaut First App Demo" 31 quarkus-getting-started "Quarkus Getting Started Demo" 32 spring-boot-getting-started "Spring-boot Getting Started Demo" 33 spring-petclinic "Spring PetClinic Demo" 34 } 35 36 set file1 [lindex $argv 0] 37 set file2 [lindex $argv 1] 38 set fd [open $file1] 39 set data [read $fd] 40 close $fd 41 42 if {![regexp {built from https://github.com/openjdk/leyden/commit/([0-9a-z]+)} $data dummy version]} { 43 puts "Error: cannot find version" 44 exit 1 45 } 46 47 if {![regexp "processor\[\t \]+: (\[0-9\]+)" $data dummy cores]} { 48 puts "Error: cannot find cores" 49 exit 1 50 } else { 51 incr cores 1 52 } 53 54 puts "- Leyden: https://github.com/openjdk/leyden/tree/$version" 55 puts "" 56 puts "For details information about the hardware and raw numbers, see \[$file1\](test/hotspot/jtreg/premain/bench_data/$file1)" 57 puts " and \[$file2\](test/hotspot/jtreg/premain/bench_data/$file2)" 58 puts "" 59 60 set output "" 61 set section 1 62 set runs [list $file1 "Desktop/Server Class ($cores Cores)" $file2 "2 Cores Only"] 63 foreach {file type} $runs { 64 append output "### 5.$section Benchmark Results - $type\n" 65 set fd [open $file] 66 set speed "" 67 set i 0 68 while {![eof $fd]} { 69 set line [gets $fd] 70 if {[regexp {([0-9]+.[0-9]+x) improvement} $line dummy x]} { 71 set speed $x 72 } elseif {[regexp {[-]Normalized-----} $line]} { 73 set data "" 74 75 while {![eof $fd]} { 76 set line [gets $fd] 77 if {[regexp {[-]--------------------} $line]} { 78 break 79 } else { 80 append data $line\n 81 } 82 } 83 set name [lindex $group [expr $i * 2 + 1]] 84 append output "\n#### $name ($speed improvement - $type)\n\n" 85 append output "[string trim $data]\n" 86 87 set thename($i) $name 88 set summary($file,$i) $speed 89 set speed "" 90 incr i 91 } 92 } 93 incr section 1 94 } 95 96 puts "#### Premain AOT Cache Summary\n" 97 98 puts "This is the speed up of **premain aot cache** vs **mainline default** in the two types of configurations" 99 puts "" 100 puts "| Benchmark | [lindex $runs 1] | [lindex $runs 3]|" 101 puts "|:-------------|-------------:| -------------:|" 102 103 set total $i 104 set t1 [lindex $runs 0] 105 set t2 [lindex $runs 2] 106 for {set i 0} {$i < $total} {incr i} { 107 puts "| $thename($i) | $summary($t1,$i) | $summary($t2,$i) |" 108 } 109 110 puts "" 111 puts [string trim $output] 112