Some operations are faster when included in the generated code rather than dispatched to Number.prototype
2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012-2015 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.benchmark.sieve;
20 import java.io.IOException;
21 import net.java.html.js.JavaScriptBody;
22 import org.apidesign.bck2brwsr.vmtest.Compare;
23 import org.apidesign.bck2brwsr.vmtest.VMTest;
24 import org.testng.annotations.Factory;
28 * @author Jaroslav Tulach <jtulach@netbeans.org>
30 public class SieveTest extends Primes {
34 @JavaScriptBody(args = { }, body = "return new Date().getTime();")
35 protected int time() {
36 return (int) System.currentTimeMillis();
39 @Compare(scripting = false)
40 public int oneThousand() throws IOException {
41 SieveTest sieve = new SieveTest();
43 int res = sieve.compute(1000);
44 int took = time() - now;
45 log("oneThousand in " + took + " ms");
49 @Compare(scripting = false)
50 public int fiveThousand() throws IOException {
51 SieveTest sieve = new SieveTest();
53 int res = sieve.compute(5000);
54 int took = time() - now;
55 log("oneThousand in " + took + " ms");
60 public static Object[] create() {
61 return VMTest.create(SieveTest.class);
64 @JavaScriptBody(args = { "msg" }, body = "if (typeof console !== 'undefined') console.log(msg);")
66 protected void log(String msg) {
67 System.err.println(msg);