Path: blob/master/test/jdk/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java
41162 views
/*1* Copyright (c) 1999, 2008, 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 it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 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 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24*25*/2627package bench.serial;2829import bench.Benchmark;30import java.io.ObjectInputStream;31import java.io.ObjectOutputStream;32import java.io.ObjectStreamClass;33import java.io.Serializable;3435/**36* Benchmark for testing speed of class descriptor reads/writes.37*/38public class ClassDesc implements Benchmark {3940static class Dummy0 implements Serializable { Dummy0 i0; }41static class Dummy1 extends Dummy0 { Dummy1 i1; }42static class Dummy2 extends Dummy1 { Dummy2 i2; }43static class Dummy3 extends Dummy2 { Dummy3 i3; }44static class Dummy4 extends Dummy3 { Dummy4 i4; }45static class Dummy5 extends Dummy4 { Dummy5 i5; }46static class Dummy6 extends Dummy5 { Dummy6 i6; }47static class Dummy7 extends Dummy6 { Dummy7 i7; }48static class Dummy8 extends Dummy7 { Dummy8 i8; }49static class Dummy9 extends Dummy8 { Dummy9 i9; }50static class Dummy10 extends Dummy9 { Dummy10 i10; }51static class Dummy11 extends Dummy10 { Dummy11 i11; }52static class Dummy12 extends Dummy11 { Dummy12 i12; }53static class Dummy13 extends Dummy12 { Dummy13 i13; }54static class Dummy14 extends Dummy13 { Dummy14 i14; }55static class Dummy15 extends Dummy14 { Dummy15 i15; }56static class Dummy16 extends Dummy15 { Dummy16 i16; }57static class Dummy17 extends Dummy16 { Dummy17 i17; }58static class Dummy18 extends Dummy17 { Dummy18 i18; }59static class Dummy19 extends Dummy18 { Dummy19 i19; }60static class Dummy20 extends Dummy19 { Dummy20 i20; }61static class Dummy21 extends Dummy20 { Dummy21 i21; }62static class Dummy22 extends Dummy21 { Dummy22 i22; }63static class Dummy23 extends Dummy22 { Dummy23 i23; }64static class Dummy24 extends Dummy23 { Dummy24 i24; }65static class Dummy25 extends Dummy24 { Dummy25 i25; }66static class Dummy26 extends Dummy25 { Dummy26 i26; }67static class Dummy27 extends Dummy26 { Dummy27 i27; }68static class Dummy28 extends Dummy27 { Dummy28 i28; }69static class Dummy29 extends Dummy28 { Dummy29 i29; }70static class Dummy30 extends Dummy29 { Dummy30 i30; }71static class Dummy31 extends Dummy30 { Dummy31 i31; }72static class Dummy32 extends Dummy31 { Dummy32 i32; }73static class Dummy33 extends Dummy32 { Dummy33 i33; }74static class Dummy34 extends Dummy33 { Dummy34 i34; }75static class Dummy35 extends Dummy34 { Dummy35 i35; }76static class Dummy36 extends Dummy35 { Dummy36 i36; }77static class Dummy37 extends Dummy36 { Dummy37 i37; }78static class Dummy38 extends Dummy37 { Dummy38 i38; }79static class Dummy39 extends Dummy38 { Dummy39 i39; }80static class Dummy40 extends Dummy39 { Dummy40 i40; }81static class Dummy41 extends Dummy40 { Dummy41 i41; }82static class Dummy42 extends Dummy41 { Dummy42 i42; }83static class Dummy43 extends Dummy42 { Dummy43 i43; }84static class Dummy44 extends Dummy43 { Dummy44 i44; }85static class Dummy45 extends Dummy44 { Dummy45 i45; }86static class Dummy46 extends Dummy45 { Dummy46 i46; }87static class Dummy47 extends Dummy46 { Dummy47 i47; }88static class Dummy48 extends Dummy47 { Dummy48 i48; }89static class Dummy49 extends Dummy48 { Dummy49 i49; }90static class Dummy50 extends Dummy49 { Dummy50 i50; }9192/**93* Write and read class descriptors to/from a stream.94* Arguments: <# cycles>95*/96public long run(String[] args) throws Exception {97int ncycles = Integer.parseInt(args[0]);98StreamBuffer sbuf = new StreamBuffer();99ObjectOutputStream oout =100new ObjectOutputStream(sbuf.getOutputStream());101ObjectInputStream oin =102new ObjectInputStream(sbuf.getInputStream());103ObjectStreamClass desc = ObjectStreamClass.lookup(Dummy50.class);104105doReps(oout, oin, sbuf, desc, 1); // warmup106107long start = System.currentTimeMillis();108doReps(oout, oin, sbuf, desc, ncycles);109return System.currentTimeMillis() - start;110}111112/**113* Run benchmark for given number of cycles.114*/115void doReps(ObjectOutputStream oout, ObjectInputStream oin,116StreamBuffer sbuf, ObjectStreamClass desc, int ncycles)117throws Exception118{119for (int i = 0; i < ncycles; i++) {120sbuf.reset();121oout.reset();122oout.writeObject(desc);123oout.flush();124oin.readObject();125}126}127}128129130