From 54355943430ae24d8b0bf86ae4714bb6700faa86 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Mon, 20 Feb 2012 12:43:02 +0200 Subject: [PATCH] benchmarks refreshed --- .../{ => src/binary_trees}/BinaryTrees.java | 1 + .../{ => src/binary_trees}/BinaryTrees.kt | 17 +++++++++++ .../src/benchmarks/{ => src/flist}/FList.java | 2 ++ .../src/benchmarks/{ => src/flist}/FList.kt | 23 ++++++++++++--- .../{ => src/lockperf}/LockPerf.java | 2 ++ .../benchmarks/{ => src/lockperf}/LockPerf.kt | 27 +++++++++++++----- .../{ => src/quicksort}/Quicksort.java | 2 ++ .../{ => src/quicksort}/Quicksort.kt | 16 +++++++++++ .../{ => src/spectralnorm}/SpectralNorm.java | 1 + .../{ => src/spectralnorm}/SpectralNorm.kt | 2 +- .../{ => src/threadring}/ThreadRing.java | 17 +---------- .../{ => src/threadring}/ThreadRing.kt | 28 +++++++++++++------ 12 files changed, 102 insertions(+), 36 deletions(-) rename examples/src/benchmarks/{ => src/binary_trees}/BinaryTrees.java (99%) rename examples/src/benchmarks/{ => src/binary_trees}/BinaryTrees.kt (72%) rename examples/src/benchmarks/{ => src/flist}/FList.java (99%) rename examples/src/benchmarks/{ => src/flist}/FList.kt (70%) rename examples/src/benchmarks/{ => src/lockperf}/LockPerf.java (99%) rename examples/src/benchmarks/{ => src/lockperf}/LockPerf.kt (61%) rename examples/src/benchmarks/{ => src/quicksort}/Quicksort.java (98%) rename examples/src/benchmarks/{ => src/quicksort}/Quicksort.kt (61%) rename examples/src/benchmarks/{ => src/spectralnorm}/SpectralNorm.java (99%) rename examples/src/benchmarks/{ => src/spectralnorm}/SpectralNorm.kt (99%) rename examples/src/benchmarks/{ => src/threadring}/ThreadRing.java (87%) rename examples/src/benchmarks/{ => src/threadring}/ThreadRing.kt (77%) diff --git a/examples/src/benchmarks/BinaryTrees.java b/examples/src/benchmarks/src/binary_trees/BinaryTrees.java similarity index 99% rename from examples/src/benchmarks/BinaryTrees.java rename to examples/src/benchmarks/src/binary_trees/BinaryTrees.java index 957a58c8e58..e802c96e18d 100644 --- a/examples/src/benchmarks/BinaryTrees.java +++ b/examples/src/benchmarks/src/binary_trees/BinaryTrees.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package binary_trees; public class BinaryTrees { diff --git a/examples/src/benchmarks/BinaryTrees.kt b/examples/src/benchmarks/src/binary_trees/BinaryTrees.kt similarity index 72% rename from examples/src/benchmarks/BinaryTrees.kt rename to examples/src/benchmarks/src/binary_trees/BinaryTrees.kt index 3599a3efb44..b5b06576f76 100644 --- a/examples/src/benchmarks/BinaryTrees.kt +++ b/examples/src/benchmarks/src/binary_trees/BinaryTrees.kt @@ -1,3 +1,20 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package binary_trees; + val minDepth = 4 fun main(args: Array) { diff --git a/examples/src/benchmarks/FList.java b/examples/src/benchmarks/src/flist/FList.java similarity index 99% rename from examples/src/benchmarks/FList.java rename to examples/src/benchmarks/src/flist/FList.java index f8f69effc97..8417762450f 100644 --- a/examples/src/benchmarks/FList.java +++ b/examples/src/benchmarks/src/flist/FList.java @@ -14,6 +14,8 @@ * limitations under the License. */ +package flist; + import java.util.NoSuchElementException; abstract public class FList { diff --git a/examples/src/benchmarks/FList.kt b/examples/src/benchmarks/src/flist/FList.kt similarity index 70% rename from examples/src/benchmarks/FList.kt rename to examples/src/benchmarks/src/flist/FList.kt index 08978dae5d6..fa061340e85 100644 --- a/examples/src/benchmarks/FList.kt +++ b/examples/src/benchmarks/src/flist/FList.kt @@ -1,4 +1,19 @@ -package flist +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package flist_kotlin abstract class FList { abstract val head : T @@ -7,7 +22,7 @@ abstract class FList { abstract fun plus(element: T) : FList } -class EmptyFList() : FList { +class EmptyFList() : FList() { override val head: T get() = throw java.util.NoSuchElementException() @@ -17,14 +32,14 @@ class EmptyFList() : FList { override fun plus(element: T) : FList = OneElementFList(element) } -class OneElementFList (override val head: T): FList { +class OneElementFList (override val head: T): FList() { override val tail : EmptyFList get() = EmptyFList() override fun plus(element: T) : FList = StandardFList(element, this) } -class StandardFList (override val head: T, override val tail: FList) : FList { +class StandardFList (override val head: T, override val tail: FList) : FList() { override fun plus(element: T) : FList = StandardFList(element, this) } diff --git a/examples/src/benchmarks/LockPerf.java b/examples/src/benchmarks/src/lockperf/LockPerf.java similarity index 99% rename from examples/src/benchmarks/LockPerf.java rename to examples/src/benchmarks/src/lockperf/LockPerf.java index a1b2bf2191f..75d03ee6d0a 100644 --- a/examples/src/benchmarks/LockPerf.java +++ b/examples/src/benchmarks/src/lockperf/LockPerf.java @@ -14,6 +14,8 @@ * limitations under the License. */ +package lockperf; + import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; diff --git a/examples/src/benchmarks/LockPerf.kt b/examples/src/benchmarks/src/lockperf/LockPerf.kt similarity index 61% rename from examples/src/benchmarks/LockPerf.kt rename to examples/src/benchmarks/src/lockperf/LockPerf.kt index 9c68697bf01..4e4193e8759 100644 --- a/examples/src/benchmarks/LockPerf.kt +++ b/examples/src/benchmarks/src/lockperf/LockPerf.kt @@ -1,4 +1,20 @@ -package lockperformance +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package lockperf_kotlin import std.io.* import std.util.* @@ -30,10 +46,10 @@ fun main(args: Array) { lock.lock() try { if (counter.get() == 100000000) { - countDown(); + countDown() break; } else { - counter.incrementAndGet(); + counter.incrementAndGet() } } finally { @@ -47,9 +63,6 @@ fun main(args: Array) { println(threadNum.toString() + " " + duration) - if(threadNum < 2 * processors) - threadNum = threadNum + 1 - else - threadNum = threadNum * 2 + if(threadNum < 2 * processors) threadNum++ else threadNum = 2*threadNum } } diff --git a/examples/src/benchmarks/Quicksort.java b/examples/src/benchmarks/src/quicksort/Quicksort.java similarity index 98% rename from examples/src/benchmarks/Quicksort.java rename to examples/src/benchmarks/src/quicksort/Quicksort.java index 49049d2c89a..18d789a1eb0 100644 --- a/examples/src/benchmarks/Quicksort.java +++ b/examples/src/benchmarks/src/quicksort/Quicksort.java @@ -14,6 +14,8 @@ * limitations under the License. */ +package quicksort; + public class Quicksort { public static void swap(int[] a, int i, int j) { diff --git a/examples/src/benchmarks/Quicksort.kt b/examples/src/benchmarks/src/quicksort/Quicksort.kt similarity index 61% rename from examples/src/benchmarks/Quicksort.kt rename to examples/src/benchmarks/src/quicksort/Quicksort.kt index ccbe6359048..52dbd73edae 100644 --- a/examples/src/benchmarks/Quicksort.kt +++ b/examples/src/benchmarks/src/quicksort/Quicksort.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package quicksort fun IntArray.swap(i:Int, j:Int) { diff --git a/examples/src/benchmarks/SpectralNorm.java b/examples/src/benchmarks/src/spectralnorm/SpectralNorm.java similarity index 99% rename from examples/src/benchmarks/SpectralNorm.java rename to examples/src/benchmarks/src/spectralnorm/SpectralNorm.java index 1a3a4ff562a..970102dc8f3 100644 --- a/examples/src/benchmarks/SpectralNorm.java +++ b/examples/src/benchmarks/src/spectralnorm/SpectralNorm.java @@ -1,3 +1,4 @@ +package spectralnorm_kotlin; /* * Copyright 2010-2012 JetBrains s.r.o. * diff --git a/examples/src/benchmarks/SpectralNorm.kt b/examples/src/benchmarks/src/spectralnorm/SpectralNorm.kt similarity index 99% rename from examples/src/benchmarks/SpectralNorm.kt rename to examples/src/benchmarks/src/spectralnorm/SpectralNorm.kt index 37c046b47f3..20eb6d91a6d 100644 --- a/examples/src/benchmarks/SpectralNorm.kt +++ b/examples/src/benchmarks/src/spectralnorm/SpectralNorm.kt @@ -1,4 +1,4 @@ -package spectralnorm +package spectralnorm_kotlin import java.text.DecimalFormat; import java.text.NumberFormat; diff --git a/examples/src/benchmarks/ThreadRing.java b/examples/src/benchmarks/src/threadring/ThreadRing.java similarity index 87% rename from examples/src/benchmarks/ThreadRing.java rename to examples/src/benchmarks/src/threadring/ThreadRing.java index 6fc276db834..39349d39e10 100644 --- a/examples/src/benchmarks/ThreadRing.java +++ b/examples/src/benchmarks/src/threadring/ThreadRing.java @@ -1,19 +1,4 @@ -/* - * Copyright 2010-2012 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - +package threadring; /** * The Computer Language Benchmarks Game * http://shootout.alioth.debian.org/ diff --git a/examples/src/benchmarks/ThreadRing.kt b/examples/src/benchmarks/src/threadring/ThreadRing.kt similarity index 77% rename from examples/src/benchmarks/ThreadRing.kt rename to examples/src/benchmarks/src/threadring/ThreadRing.kt index 6f8c61ad56e..8a722e70441 100644 --- a/examples/src/benchmarks/ThreadRing.kt +++ b/examples/src/benchmarks/src/threadring/ThreadRing.kt @@ -1,4 +1,20 @@ -package threadring +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package threadring_kotlin import java.util.concurrent.*; import java.util.concurrent.atomic.*; @@ -24,19 +40,14 @@ fun main(args: Array) { System.out?.println("[ThreadRing-" + System.getProperty("project.name")+ " Benchmark Result: " + total + "]") } -class TokenMessage(val nodeId : Int, value: Int, val isStop: Boolean) : AtomicInteger(value){ -} +class TokenMessage(val nodeId : Int, value: Int, val isStop: Boolean) : AtomicInteger(value) class ThreadRing(val N: Int) { val executor = Executors.newFixedThreadPool(MAX_THREADS).sure() - val nodes : Array = Array(MAX_NODES+1, { Node(it+1) }) + val nodes : Array = Array(MAX_NODES+1, { (it : Int) -> Node(it+1) }); { - connectNodes() - } - - fun connectNodes() { nodes[nodes.size-1] = nodes[0] for (i in 0..nodes.size-2) { nodes[i].connect(nodes[i+1]); @@ -46,6 +57,7 @@ class ThreadRing(val N: Int) { fun sendMessage(m : TokenMessage) { nodes[0].sendMessage(m) } + class Node(val nodeId : Int) : Runnable { val queue = LinkedBlockingQueue() var isActive = false