You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by gi...@apache.org on 2020/10/24 10:05:04 UTC

[incubator-dolphinscheduler-website] branch asf-site updated: Automated deployment: Sat Oct 24 10:04:52 UTC 2020 ce111318c06e01f9392a6b7781c3b8b0e7a6dd1b

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new c0fc004  Automated deployment: Sat Oct 24 10:04:52 UTC 2020 ce111318c06e01f9392a6b7781c3b8b0e7a6dd1b
c0fc004 is described below

commit c0fc004b23951f44f5cc149a1e58f09a0731bfcc
Author: CalvinKirs <Ca...@users.noreply.github.com>
AuthorDate: Sat Oct 24 10:04:53 2020 +0000

    Automated deployment: Sat Oct 24 10:04:52 UTC 2020 ce111318c06e01f9392a6b7781c3b8b0e7a6dd1b
---
 build/documentation.js                 |   2 +-
 en-us/docs/development/microbench.html | 110 +++++++++++++++++++++++++++++++++
 en-us/docs/development/microbench.json |  10 +++
 3 files changed, 121 insertions(+), 1 deletion(-)

diff --git a/build/documentation.js b/build/documentation.js
index 8071b68..0b0e63e 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -174,4 +174,4 @@ Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol
  * Copyright © 2012-2019 Faisal Salman <f...@faisalman.com>
  * Licensed under MIT License
  */
-return"string"==typeof e?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},m={rgx:function(e,t){for(var n,r,o,i,a,c,s=0;s<t.length&&!a;){var l=t[s],u=t[s+1];for(n=r=0;n<l.length&&!a;)if(a=l[n++].exec(e))for(o=0;o<u.length;o++)c=a[++r],i=u[o],"object"==typeof i&&i.length>0?2==i.length?"function"==typeof i[1]?this[i[0]]=i[1].call(this,c):this[i[0]]=i[1]:3==i.length?"function"!=typeof i[1]||i[1].exec&&i[1].test?this[i [...]
\ No newline at end of file
+return"string"==typeof e?e.replace(/[^\d\.]/g,"").split(".")[0]:void 0},trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},m={rgx:function(e,t){for(var n,r,o,i,a,c,s=0;s<t.length&&!a;){var l=t[s],u=t[s+1];for(n=r=0;n<l.length&&!a;)if(a=l[n++].exec(e))for(o=0;o<u.length;o++)c=a[++r],i=u[o],"object"==typeof i&&i.length>0?2==i.length?"function"==typeof i[1]?this[i[0]]=i[1].call(this,c):this[i[0]]=i[1]:3==i.length?"function"!=typeof i[1]||i[1].exec&&i[1].test?this[i [...]
\ No newline at end of file
diff --git a/en-us/docs/development/microbench.html b/en-us/docs/development/microbench.html
new file mode 100644
index 0000000..6321fe5
--- /dev/null
+++ b/en-us/docs/development/microbench.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+	<meta name="keywords" content="dolphinscheduler, microbenchmark" />
+	<meta name="description" content="This file describes several points of benchmark testing" />
+	<!-- 网页标签标题 -->
+	<title>Micro BenchMark Notice</title>
+	<link rel="shortcut icon" href="/img/docsite.ico"/>
+	<link rel="stylesheet" href="/build/documentation.css" />
+</head>
+<body>
+	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul class="ant-menu blackClass ant [...]
+<p>All optimization must be based on data verification, and blind optimization is rejected. Based on this, we provide the MicroBench module.</p>
+<p>The MicroBench module is based on the OpenJDK JMH component (HotSpot's recommended benchmark test program). When you start benchmarking, you don't need additional dependencies.</p>
+<p>JMH, the Java MicroBenchmark Harness, is a tool suite dedicated to code microbenchmark testing. What is Micro Benchmark? Simply put, it is based on method-level benchmark testing, with an accuracy of microseconds. When you locate a hot method and want to further optimize the performance of the method, you can use JMH to quantitatively analyze the optimized results.</p>
+<h3>Several points to note in Java benchmark testing:</h3>
+<ul>
+<li>
+<p>Prevent useless code from entering the test method.</p>
+</li>
+<li>
+<p>Concurrent testing.</p>
+</li>
+<li>
+<p>The test results are presented.</p>
+</li>
+</ul>
+<h3>Typical application scenarios of JMH are:</h3>
+<ul>
+<li>
+<p>1: Quantitatively analyze the optimization effect of a hotspot function</p>
+</li>
+<li>
+<p>2: Want to quantitatively know how long a function needs to be executed, and the correlation between execution time and input variables</p>
+</li>
+<li>
+<p>3: Compare multiple implementations of a function</p>
+</li>
+</ul>
+<p>DolphinScheduler-MicroBench provides AbstractBaseBenchmark, you can inherit from it, write your benchmark code, AbstractMicroBenchmark can guarantee to run in JUnit mode.</p>
+<h3>Customized operating parameters</h3>
+<p>The default AbstractMicrobenchmark configuration is</p>
+<p>Warmup times 10 (warmupIterations)</p>
+<p>Number of tests 10 (measureIterations)</p>
+<p>Fork quantity 2 (forkCount)</p>
+<p>You can specify these parameters at startup,-DmeasureIterations, -DperfReportDir (output benchmark test result file directory), -DwarmupIterations, -DforkCount</p>
+<h3>DolphinScheduler-MicroBench Introduction</h3>
+<p>It is generally not recommended to use fewer cycles when running tests. However, a smaller number of tests helps to verify the work during the benchmark test. After the verification is over, run a large number of benchmark tests.</p>
+<pre><code class="language-java"><span class="hljs-meta">@Warmup</span>(iterations = <span class="hljs-number">2</span>, time = <span class="hljs-number">1</span>)
+<span class="hljs-meta">@Measurement</span>(iterations = <span class="hljs-number">4</span>, time = <span class="hljs-number">1</span>)
+<span class="hljs-meta">@State</span>(Scope.Benchmark)
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">EnumBenchMark</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractBaseBenchmark</span> </span>{
+
+}
+</code></pre>
+<p>This can run benchmarks at the method level or the class level. Command line parameters will override the parameters on the annotation.</p>
+<pre><code class="language-java"><span class="hljs-meta">@Benchmark</span> <span class="hljs-comment">// Method annotation, indicating that the method is an object that needs to be benchmarked.</span>
+<span class="hljs-meta">@BenchmarkMode</span>(Mode.AverageTime) <span class="hljs-comment">// Optional benchmark test mode is obtained through enumeration</span>
+<span class="hljs-meta">@OutputTimeUnit</span>(TimeUnit.MICROSECONDS) <span class="hljs-comment">// Output time unit</span>
+<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">enumStaticMapTest</span><span class="hljs-params">()</span> </span>{
+    TestTypeEnum.newGetNameByType(testNum);
+}
+</code></pre>
+<p>When your benchmark test is written, you can run it to view the specific test conditions: (The actual results depend on your system configuration)</p>
+<p>First, it will warm up our code,</p>
+<pre><code class="language-java"># Warmup Iteration   1: 0.007 us/op
+# Warmup Iteration   2: 0.008 us/op
+Iteration   1: 0.004 us/op
+Iteration   2: 0.004 us/op
+Iteration   3: 0.004 us/op
+Iteration   4: 0.004 us/op
+</code></pre>
+<p>After warmup, we usually get the following results</p>
+<pre><code class="language-java">Benchmark                        (testNum)   Mode  Cnt          Score           Error  Units
+EnumBenchMark.simpleTest               <span class="hljs-number">101</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">428750972.826</span> ±  <span class="hljs-number">66511362.350</span>  ops/s
+EnumBenchMark.simpleTest               <span class="hljs-number">108</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">299615240.337</span> ± <span class="hljs-number">290089561.671</span>  ops/s
+EnumBenchMark.simpleTest               <span class="hljs-number">103</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">288423221.721</span> ± <span class="hljs-number">130542990.747</span>  ops/s
+EnumBenchMark.simpleTest               <span class="hljs-number">104</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">236811792.152</span> ± <span class="hljs-number">155355935.479</span>  ops/s
+EnumBenchMark.simpleTest               <span class="hljs-number">105</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">472247775.246</span> ±  <span class="hljs-number">45769877.951</span>  ops/s
+EnumBenchMark.simpleTest               <span class="hljs-number">103</span>  thrpt    <span class="hljs-number">8</span>  <span class="hljs-number">455473025.252</span> ±  <span class="hljs-number">61212956.944</span>  ops/s
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">101</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.006</span> ±         <span class="hljs-number">0.003</span>  us/op
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">108</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.005</span> ±         <span class="hljs-number">0.002</span>  us/op
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">103</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.006</span> ±         <span class="hljs-number">0.005</span>  us/op
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">104</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.006</span> ±         <span class="hljs-number">0.004</span>  us/op
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">105</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.004</span> ±         <span class="hljs-number">0.001</span>  us/op
+EnumBenchMark.enumStaticMapTest        <span class="hljs-number">103</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.004</span> ±         <span class="hljs-number">0.001</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">101</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.011</span> ±         <span class="hljs-number">0.004</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">108</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.025</span> ±         <span class="hljs-number">0.016</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">103</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.019</span> ±         <span class="hljs-number">0.010</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">104</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.018</span> ±         <span class="hljs-number">0.018</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">105</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.014</span> ±         <span class="hljs-number">0.012</span>  us/op
+EnumBenchMark.enumValuesTest           <span class="hljs-number">103</span>   avgt    <span class="hljs-number">8</span>          <span class="hljs-number">0.012</span> ±         <span class="hljs-number">0.009</span>  us/op
+</code></pre>
+<p>OpenJDK officially gave a lot of sample codes, interested students can query and learn JMH by themselves:<a href="http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/">OpenJDK-JMH-Example</a></p>
+</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/ds_gray.svg"/><div class="cols-container"><div class="col col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Incubator. 
+Incubation is required of all newly accepted projects until a further review indicates 
+that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the ASF.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a href="/en-us/docs/development/architecture-design.html" target="_self">Overview</a></dd><dd><a href="/en-us/docs/1.2.0/user_doc/quick-start.html" target="_self">Quick start</a></dd><dd><a href="/en-us/docs/development/backend-development.html" target="_self">Developer guide</a></dd></dl></div><div class="col col-6"><dl><dt>ASF</dt><dd><a href="http:/ [...]
+	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
+	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
+	<script>
+		window.rootPath = '';
+  </script>
+	<script src="/build/documentation.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/development/microbench.json b/en-us/docs/development/microbench.json
new file mode 100644
index 0000000..0eaf294
--- /dev/null
+++ b/en-us/docs/development/microbench.json
@@ -0,0 +1,10 @@
+{
+  "filename": "microbench.md",
+  "__html": "<h2>DolphinSchedulerMicroBench Microbenchmark</h2>\n<p>All optimization must be based on data verification, and blind optimization is rejected. Based on this, we provide the MicroBench module.</p>\n<p>The MicroBench module is based on the OpenJDK JMH component (HotSpot's recommended benchmark test program). When you start benchmarking, you don't need additional dependencies.</p>\n<p>JMH, the Java MicroBenchmark Harness, is a tool suite dedicated to code microbenchmark testin [...]
+  "link": "/en-us/docs/development/microbench.html",
+  "meta": {
+    "title": "Micro BenchMark Notice",
+    "keywords": "dolphinscheduler, microbenchmark",
+    "description": "This file describes several points of benchmark testing"
+  }
+}
\ No newline at end of file