aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2016-12-05 00:48:49 -0300
committerDiego <diegolparra@gmail.com>2016-12-05 00:48:49 -0300
commit4be427b0b7808700f0ac6d8f9b28cb0a4fc55581 (patch)
treeba3f3d2d155238f52e3342799785831eef1f32d7
parent9d20585b0ee839eb2f5617ce9d76d928696d0c89 (diff)
downloadKamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.tar.gz
Kamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.tar.bz2
Kamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.zip
wip
-rw-r--r--README.md5
-rw-r--r--build.sbt9
-rw-r--r--kamon-bench/src/main/resources/application.conf3
-rw-r--r--kamon-bench/src/main/scala/kamon/bench/instruments/KamonCounterBench.scala34
-rw-r--r--kamon-bench/src/main/scala/kamon/bench/instruments/KamonMinMaxCounterBench.scala35
-rw-r--r--kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala2
-rw-r--r--project/plugins.sbt7
7 files changed, 88 insertions, 7 deletions
diff --git a/README.md b/README.md
index 600c067d..539a842b 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,11 @@ file:
libraryDependencies += "kamon.io" %% "kamon-core" % "0.6.3"
```
+### Documentation
+
+Kamon information and documentation is available on the
+[website](http://kamon.io).
+
### Modules ###
* [Play Framework]
diff --git a/build.sbt b/build.sbt
index a8a3a7d2..a39041b9 100644
--- a/build.sbt
+++ b/build.sbt
@@ -22,7 +22,7 @@ lazy val kamon = (project in file("."))
.settings(basicSettings: _*)
.settings(formatSettings: _*)
.settings(noPublishing: _*)
- .aggregate(core, autoweave, testkit)
+ .aggregate(core, autoweave, testkit, bench)
lazy val core = (project in file("kamon-core"))
@@ -56,5 +56,12 @@ lazy val testkit = (project in file("kamon-testkit"))
providedScope(aspectJ) ++
testScope(slf4jApi, slf4jnop))
+lazy val bench = (project in file("kamon-bench"))
+ .dependsOn(core)
+ .settings(basicSettings: _*)
+ .settings(formatSettings: _*)
+ .settings(noPublishing: _*)
+ .enablePlugins(JmhPlugin)
+
lazy val noPublishing = Seq(publish := (), publishLocal := (), publishArtifact := false)
diff --git a/kamon-bench/src/main/resources/application.conf b/kamon-bench/src/main/resources/application.conf
new file mode 100644
index 00000000..9c5fec18
--- /dev/null
+++ b/kamon-bench/src/main/resources/application.conf
@@ -0,0 +1,3 @@
+kamon.metric {
+ tick-interval = 1 hour
+} \ No newline at end of file
diff --git a/kamon-bench/src/main/scala/kamon/bench/instruments/KamonCounterBench.scala b/kamon-bench/src/main/scala/kamon/bench/instruments/KamonCounterBench.scala
new file mode 100644
index 00000000..01162d53
--- /dev/null
+++ b/kamon-bench/src/main/scala/kamon/bench/instruments/KamonCounterBench.scala
@@ -0,0 +1,34 @@
+package kamon.bench.instruments
+
+import java.nio.LongBuffer
+import java.util.concurrent.TimeUnit
+
+import kamon.metric.instrument.{CollectionContext, LongAdderCounter}
+import org.openjdk.jmh.annotations._
+
+@State(Scope.Group)
+@BenchmarkMode(Array(Mode.AverageTime))
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@Fork(2)
+@Warmup(iterations = 10)
+@Measurement(iterations = 10)
+class KamonCounterBench {
+
+ val counter: LongAdderCounter = new LongAdderCounter
+
+ val collectionContext = new CollectionContext {
+ val buffer: LongBuffer = LongBuffer.allocate(33792)
+ }
+
+ @Benchmark
+ @Group("rw")
+ def increment(): Unit = {
+ counter.increment()
+ }
+
+ @Benchmark
+ @Group("rw")
+ def get(): Long = {
+ counter.collect(collectionContext).count
+ }
+}
diff --git a/kamon-bench/src/main/scala/kamon/bench/instruments/KamonMinMaxCounterBench.scala b/kamon-bench/src/main/scala/kamon/bench/instruments/KamonMinMaxCounterBench.scala
new file mode 100644
index 00000000..5b9de062
--- /dev/null
+++ b/kamon-bench/src/main/scala/kamon/bench/instruments/KamonMinMaxCounterBench.scala
@@ -0,0 +1,35 @@
+package kamon.bench.instruments
+
+import java.nio.LongBuffer
+import java.util.concurrent.TimeUnit
+
+import kamon.metric.instrument.Histogram.DynamicRange
+import kamon.metric.instrument.{CollectionContext, Histogram, PaddedMinMaxCounter}
+import org.openjdk.jmh.annotations._
+
+@State(Scope.Group)
+@BenchmarkMode(Array(Mode.AverageTime))
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@Fork(2)
+@Warmup(iterations = 10)
+@Measurement(iterations = 10)
+class KamonMinMaxCounterBench {
+
+ val counter: PaddedMinMaxCounter = new PaddedMinMaxCounter(Histogram(DynamicRange(1L, 999999999L, 2)))
+
+ val collectionContext = new CollectionContext {
+ val buffer: LongBuffer = LongBuffer.allocate(33792)
+ }
+
+ @Benchmark
+ @Group("rw")
+ def increment(): Unit = {
+ counter.increment()
+ }
+
+ @Benchmark
+ @Group("rw")
+ def get(): Long = {
+ counter.collect(collectionContext).min
+ }
+}
diff --git a/kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala b/kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala
index 212d4225..399f0880 100644
--- a/kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala
+++ b/kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala
@@ -200,7 +200,7 @@ class HdrHistogram(dynamicRange: DynamicRange) extends ModifiedAtomicHistogram(
}
}
-case class CompactHdrSnapshot(val numberOfMeasurements: Long, compactRecords: Array[Long], unitMagnitude: Int,
+case class CompactHdrSnapshot(numberOfMeasurements: Long, compactRecords: Array[Long], unitMagnitude: Int,
subBucketHalfCount: Int, subBucketHalfCountMagnitude: Int) extends Histogram.Snapshot {
def min: Long = if (compactRecords.length == 0) 0 else levelFromCompactRecord(compactRecords(0))
diff --git a/project/plugins.sbt b/project/plugins.sbt
index ee51c0a9..7cd8953d 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -3,14 +3,11 @@ resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositori
resolvers += "Kamon Releases" at "http://repo.kamon.io"
addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.10.6")
-
addSbtPlugin("com.github.gseitz" % "sbt-release" % "0.8.2")
-
addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.6.0")
-
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "0.2.1")
-
addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.1")
-
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.1")
+addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.2.18")
+