summaryrefslogtreecommitdiff
path: root/BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java
diff options
context:
space:
mode:
Diffstat (limited to 'BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java')
-rw-r--r--BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java181
1 files changed, 181 insertions, 0 deletions
diff --git a/BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java b/BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java
new file mode 100644
index 0000000..076b66d
--- /dev/null
+++ b/BenchmarkFramework/app/src/main/java/art_benchmarks/caffeinemark/LoopAtom.java
@@ -0,0 +1,181 @@
+/*
+ * This software is available under multiple licenses at
+ * https://community.cablelabs.com/svn/OCAPRI/trunk/ri/RI_Stack/apps/vm_perf_test/src/com/tvworks/plateval/caffeinemark/LoopAtom.java
+ * and we redistribute it under the BSD 2-clause License
+ */
+
+ // COPYRIGHT_BEGIN
+ // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
+ //
+ // Copyright (C) 2008-2013, Cable Television Laboratories, Inc.
+ //
+ // This software is available under multiple licenses:
+ //
+ // (1) BSD 2-clause
+ // Redistribution and use in source and binary forms, with or without modification, are
+ // permitted provided that the following conditions are met:
+ // .Redistributions of source code must retain the above copyright notice, this list
+ // of conditions and the following disclaimer.
+ // .Redistributions in binary form must reproduce the above copyright notice, this list of
+ // conditions and the following disclaimer in the documentation and/or other materials
+ // provided with the distribution.
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ // PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ //
+ // (2) GPL Version 2
+ // This program is free software; you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+ // the Free Software Foundation, version 2. This program is distributed
+ // in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
+ // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ // PURPOSE. See the GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License along
+ // with this program.If not, see<http:www.gnu.org/licenses/>.
+ //
+ // (3)CableLabs License
+ // If you or the company you represent has a separate agreement with CableLabs
+ // concerning the use of this code, your rights and obligations with respect
+ // to this code shall be as set forth therein. No license is granted hereunder
+ // for any other purpose.
+ //
+ // Please contact CableLabs if you need additional information or
+ // have any questions.
+ //
+ // CableLabs
+ // 858 Coal Creek Cir
+ // Louisville, CO 80027-9750
+ // 303 661-9100
+ // COPYRIGHT_END
+
+/*
+ * Description: The loop test uses sorting and sequence generation as to measure compiler
+ * optimization of loops.
+ * Main Focus: TODO
+ *
+ */
+
+package art_benchmarks.caffeinemark;
+
+// CHECKSTYLE.OFF: .*
+public class LoopAtom
+{
+ public boolean initialize(int i)
+ {
+ if(i != 0)
+ FIBCOUNT = i;
+ fibs = new int[FIBCOUNT];
+ return true;
+ }
+
+ public int execute()
+ {
+ fibs[0] = 1;
+ for(int i = 1; i < FIBCOUNT; i++)
+ fibs[i] = fibs[i - 1] + i;
+
+ int j1 = 0;
+ int k1 = 0;
+ for(int j = 0; j < FIBCOUNT; j++)
+ {
+ for(int k = 1; k < FIBCOUNT; k++)
+ {
+ int l = FIBCOUNT + dummy;
+ j1 += l;
+ k1 += 2;
+ if(fibs[k - 1] < fibs[k])
+ {
+ int i1 = fibs[k - 1];
+ fibs[k - 1] = fibs[k];
+ fibs[k] = i1;
+ }
+ }
+
+ }
+
+ sum1 = j1;
+ sum2 = k1;
+ return fibs[0];
+ }
+
+ public String testName()
+ {
+ return new String("Loop");
+ }
+
+ public LoopAtom()
+ {
+ dummy = 12;
+ FIBCOUNT = 64;
+ }
+
+ public void setLocal()
+ {
+ }
+
+ public int cleanUp()
+ {
+ return 0;
+ }
+
+ public int defaultMagnification()
+ {
+ return 2692;
+ }
+
+ public void setRemote()
+ {
+ }
+
+ public int dummy;
+ public int FIBCOUNT;
+ public int sum1;
+ public int sum2;
+ public int fibs[];
+ // CHECKSTYLE.ON: .*
+
+ private static int PREDEFINED_FIB_COUNT = 1000;
+
+ public void timeLoopAtom(int iters) {
+ initialize(PREDEFINED_FIB_COUNT);
+ for (int i = 0; i < iters; i++) {
+ execute();
+ }
+ }
+
+ public boolean verifyLoopAtom() {
+ initialize(PREDEFINED_FIB_COUNT);
+ int expected = 499501;
+ int found = execute();
+
+ if (found != expected) {
+ System.out.println("ERROR: Expected " + expected + " but found " + found);
+ return false;
+ }
+ return true;
+ }
+
+ public static void main(String[] argv) {
+ int rc = 0;
+ LoopAtom obj = new LoopAtom();
+
+ final long before = System.currentTimeMillis();
+ obj.timeLoopAtom(120);
+ final long after = System.currentTimeMillis();
+
+ if (!obj.verifyLoopAtom()) {
+ rc++;
+ }
+ System.out.println("art_benchmarks/caffeinemark/LoopAtom: " + (after - before));
+ System.exit(rc);
+ }
+}