xref: /aosp_15_r20/dalvik/dx/tests/131-perf/run (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui#!/bin/bash
2*055d4590SKeyi Gui#
3*055d4590SKeyi Gui# Copyright (C) 2013 The Android Open Source Project
4*055d4590SKeyi Gui#
5*055d4590SKeyi Gui# Licensed under the Apache License, Version 2.0 (the "License");
6*055d4590SKeyi Gui# you may not use this file except in compliance with the License.
7*055d4590SKeyi Gui# You may obtain a copy of the License at
8*055d4590SKeyi Gui#
9*055d4590SKeyi Gui#     http://www.apache.org/licenses/LICENSE-2.0
10*055d4590SKeyi Gui#
11*055d4590SKeyi Gui# Unless required by applicable law or agreed to in writing, software
12*055d4590SKeyi Gui# distributed under the License is distributed on an "AS IS" BASIS,
13*055d4590SKeyi Gui# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*055d4590SKeyi Gui# See the License for the specific language governing permissions and
15*055d4590SKeyi Gui# limitations under the License.
16*055d4590SKeyi Gui
17*055d4590SKeyi Gui# Stop if something fails.
18*055d4590SKeyi Guiset -e
19*055d4590SKeyi Gui
20*055d4590SKeyi GuiJAVAC_SOURCE=1.7
21*055d4590SKeyi GuiJAVAC_TARGET=1.8
22*055d4590SKeyi GuiJAVAC_OPTIONS="-Xlint:-options -source ${JAVAC_SOURCE} -target ${JAVAC_TARGET}"
23*055d4590SKeyi Gui
24*055d4590SKeyi Gui# Write out classes
25*055d4590SKeyi Gui
26*055d4590SKeyi Gui${JAVAC} ${JAVAC_OPTIONS} ClassGen.java
27*055d4590SKeyi Gui
28*055d4590SKeyi Guimkdir src
29*055d4590SKeyi Guimkdir classes
30*055d4590SKeyi Gui
31*055d4590SKeyi Gui# Heap size, min and max
32*055d4590SKeyi GuiMEM=4g
33*055d4590SKeyi Gui
34*055d4590SKeyi GuiMULTIDEX="--multi-dex"
35*055d4590SKeyi GuiTHREADS="--num-threads=5"
36*055d4590SKeyi Gui
37*055d4590SKeyi Gui# Extra statistics, use to calibrate test.
38*055d4590SKeyi Gui#EXTRA="--profile-concurrency"
39*055d4590SKeyi Gui
40*055d4590SKeyi Gui# Test smaller dex files
41*055d4590SKeyi Gui#EXTRA="--set-max-idx-number=20000"
42*055d4590SKeyi Gui
43*055d4590SKeyi Gui# Test GC options
44*055d4590SKeyi Gui#GC="-JXX:+UseConcMarkSweepGC"
45*055d4590SKeyi Gui
46*055d4590SKeyi Gui# Limit HW threads
47*055d4590SKeyi Gui#TASKSET="taskset 0x00000fff
48*055d4590SKeyi Gui
49*055d4590SKeyi Gui# Number of classes, initial
50*055d4590SKeyi GuiTEST_SIZE=1000
51*055d4590SKeyi Gui
52*055d4590SKeyi Gui# number of classes, max
53*055d4590SKeyi GuiLIMIT=1000
54*055d4590SKeyi Gui
55*055d4590SKeyi Gui# Number of additional classes per test
56*055d4590SKeyi GuiSTEP=100
57*055d4590SKeyi Gui
58*055d4590SKeyi Gui# Number of fields per classes
59*055d4590SKeyi GuiFIELDS=4
60*055d4590SKeyi Gui
61*055d4590SKeyi Gui# Number of methods per class
62*055d4590SKeyi GuiMETHODS=6
63*055d4590SKeyi Gui
64*055d4590SKeyi Guifirst=1;
65*055d4590SKeyi Guiwhile [ $TEST_SIZE -le $LIMIT ]; do
66*055d4590SKeyi Gui  echo $TEST_SIZE / $LIMIT
67*055d4590SKeyi Gui  rm -rf out
68*055d4590SKeyi Gui  mkdir out
69*055d4590SKeyi Gui
70*055d4590SKeyi Gui  sleep 2
71*055d4590SKeyi Gui  ${JAVA} -classpath . ClassGen $first $TEST_SIZE $FIELDS $METHODS || exit 1
72*055d4590SKeyi Gui  first=`expr $TEST_SIZE + 1`
73*055d4590SKeyi Gui
74*055d4590SKeyi Gui  ${JAVAC} ${JAVAC_OPTIONS} -d classes `find src -name '*.java'` || exit 1
75*055d4590SKeyi Gui  (cd classes; jar cf ../x.jar `find . -name '*.class'`)
76*055d4590SKeyi Gui  sleep 3
77*055d4590SKeyi Gui
78*055d4590SKeyi Gui  start=`date +'%s%N'`
79*055d4590SKeyi Gui  $TASKSET dx -JXmx$MEM -JXms$MEM $GC --dex $EXTRA --no-optimize $MULTIDEX $THREADS --output=out x.jar || exit 1
80*055d4590SKeyi Gui  end=`date +'%s%N'`
81*055d4590SKeyi Gui  nsec=`expr $end - $start`
82*055d4590SKeyi Gui  msec=`expr $nsec / 1000000`
83*055d4590SKeyi Gui  TEST_SIZE=`expr $TEST_SIZE + $STEP`
84*055d4590SKeyi Guidone
85*055d4590SKeyi Gui
86*055d4590SKeyi Guiecho Yay!
87