diff options
author | Diego <diegolparra@gmail.com> | 2016-12-05 00:48:49 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2016-12-05 00:48:49 -0300 |
commit | 4be427b0b7808700f0ac6d8f9b28cb0a4fc55581 (patch) | |
tree | ba3f3d2d155238f52e3342799785831eef1f32d7 | |
parent | 9d20585b0ee839eb2f5617ce9d76d928696d0c89 (diff) | |
download | Kamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.tar.gz Kamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.tar.bz2 Kamon-4be427b0b7808700f0ac6d8f9b28cb0a4fc55581.zip |
wip
-rw-r--r-- | README.md | 5 | ||||
-rw-r--r-- | build.sbt | 9 | ||||
-rw-r--r-- | kamon-bench/src/main/resources/application.conf | 3 | ||||
-rw-r--r-- | kamon-bench/src/main/scala/kamon/bench/instruments/KamonCounterBench.scala | 34 | ||||
-rw-r--r-- | kamon-bench/src/main/scala/kamon/bench/instruments/KamonMinMaxCounterBench.scala | 35 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/metric/instrument/Histogram.scala | 2 | ||||
-rw-r--r-- | project/plugins.sbt | 7 |
7 files changed, 88 insertions, 7 deletions
@@ -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] @@ -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") + |