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

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


The following commit(s) were added to refs/heads/master by this push:
     new d3ab982  [docs]fix microbench.md path error
     new b870847  Merge pull request #160 from CalvinKirs/move_microbench
d3ab982 is described below

commit d3ab98285432fafa8c3c065dbabfbbc6f4898881
Author: CalvinKirs <[email protected]>
AuthorDate: Mon Jul 20 20:06:18 2020 +0800

    [docs]fix microbench.md path error
---
 docs/zh-cn/development/microbench.md | 97 ++++++++++++++++++++++++++++++++++++
 md_json/docs.json                    | 10 ++--
 site_config/development.js           |  4 ++
 site_config/docs1-2-1.js             | 10 ----
 4 files changed, 106 insertions(+), 15 deletions(-)

diff --git a/docs/zh-cn/development/microbench.md 
b/docs/zh-cn/development/microbench.md
new file mode 100644
index 0000000..6fec272
--- /dev/null
+++ b/docs/zh-cn/development/microbench.md
@@ -0,0 +1,97 @@
+#### DolphinSchedulerMicroBench 微基准测试
+所有的优化必须建立在数据印证的基础上,拒绝盲目优化。基于此,我们提供了MicroBench模块。
+
+MicroBench模块是基于OpenJDK JMH构件的(HotSpot的推荐基准测试方案)。当你开始基准测试时,你不需要额外的依赖。
+
+JMH,即Java MicroBenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro 
Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析。
+
+##### Java基准测试需要注意的几个点:
+
+* 防止无用代码进入测试方法中。
+
+* 并发测试。
+
+* 测试结果呈现。
+
+##### JMH比较典型的应用场景有:
+
+* 1:定量分析某个热点函数的优化效果
+
+* 2:想定量地知道某个函数需要执行多长时间,以及执行时间和输入变量的相关性
+
+* 3:对比一个函数的多种实现方式
+
+
+DolphinScheduler-MicroBench提供了AbstractBaseBenchmark,你可以在其基础上继承,编写你的基准测试代码,AbstractMicroBenchmark能保证以JUnit的方式运行。
+
+##### 定制运行参数
+ 
+ 默认的AbstractMicrobenchmark配置是
+ 
+ Warmup次数 10(warmupIterations)
+ 
+ 测试次数 10(measureIterations)
+ 
+ Fork数量 2 (forkCount)
+ 
+ 
你可以在启动的时候指定这些参数,-DmeasureIterations、-DperfReportDir(输出基准测试结果文件目录)、-DwarmupIterations、-DforkCount
+ 
+##### DolphinScheduler-MicroBench 介绍
+
+
+ 通常并不建议跑测试时,用较少的循环次数,但是较少的次数有助于确认基准测试时工作的,在确认结束后,再运行大量的基准测试。
+ ```java
+@Warmup(iterations = 2, time = 1)
+@Measurement(iterations = 4, time = 1)
+@State(Scope.Benchmark)
+public class EnumBenchMark extends AbstractBaseBenchmark {
+
+}
+```
+ 这可以以方法级别或者类级别来运行基准测试,命令行的参数会覆盖annotation上的参数。
+ 
+```java
+    @Benchmark //方法注解,表示该方法是需要进行 benchmark 的对象。
+    @BenchmarkMode(Mode.AverageTime) //可选基准测试模式通过枚举Mode得到
+    @OutputTimeUnit(TimeUnit.MICROSECONDS) // 输出的时间单位
+    public void enumStaticMapTest() {
+        TestTypeEnum.newGetNameByType(testNum);
+    }
+```
+
+当你的基准测试编写完成后,你可以运行它查看具体的测试情况:(实际结果取决于你的系统配置情况)
+
+首先它会对我们的代码进行预热,
+
+```
+# 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
+```
+在经过预热后,我们通常会得到如下结果
+```java
+Benchmark                        (testNum)   Mode  Cnt          Score          
 Error  Units
+EnumBenchMark.simpleTest               101  thrpt    8  428750972.826 ±  
66511362.350  ops/s
+EnumBenchMark.simpleTest               108  thrpt    8  299615240.337 ± 
290089561.671  ops/s
+EnumBenchMark.simpleTest               103  thrpt    8  288423221.721 ± 
130542990.747  ops/s
+EnumBenchMark.simpleTest               104  thrpt    8  236811792.152 ± 
155355935.479  ops/s
+EnumBenchMark.simpleTest               105  thrpt    8  472247775.246 ±  
45769877.951  ops/s
+EnumBenchMark.simpleTest               103  thrpt    8  455473025.252 ±  
61212956.944  ops/s
+EnumBenchMark.enumStaticMapTest        101   avgt    8          0.006 ±        
 0.003  us/op
+EnumBenchMark.enumStaticMapTest        108   avgt    8          0.005 ±        
 0.002  us/op
+EnumBenchMark.enumStaticMapTest        103   avgt    8          0.006 ±        
 0.005  us/op
+EnumBenchMark.enumStaticMapTest        104   avgt    8          0.006 ±        
 0.004  us/op
+EnumBenchMark.enumStaticMapTest        105   avgt    8          0.004 ±        
 0.001  us/op
+EnumBenchMark.enumStaticMapTest        103   avgt    8          0.004 ±        
 0.001  us/op
+EnumBenchMark.enumValuesTest           101   avgt    8          0.011 ±        
 0.004  us/op
+EnumBenchMark.enumValuesTest           108   avgt    8          0.025 ±        
 0.016  us/op
+EnumBenchMark.enumValuesTest           103   avgt    8          0.019 ±        
 0.010  us/op
+EnumBenchMark.enumValuesTest           104   avgt    8          0.018 ±        
 0.018  us/op
+EnumBenchMark.enumValuesTest           105   avgt    8          0.014 ±        
 0.012  us/op
+EnumBenchMark.enumValuesTest           103   avgt    8          0.012 ±        
 0.009  us/op
+```
+
+OpenJDK官方给了很多样例代码,有兴趣的同学可以自己查询并学习JMH:[OpenJDK-JMH-Example](http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/)
\ No newline at end of file
diff --git a/md_json/docs.json b/md_json/docs.json
index 7984864..9fa0b6c 100755
--- a/md_json/docs.json
+++ b/md_json/docs.json
@@ -138,6 +138,11 @@
       "meta": {}
     },
     {
+      "filename": "microbench.md",
+      "link": "/zh-cn/docs/development/microbench.html",
+      "meta": {}
+    },
+    {
       "filename": "faq.md",
       "link": "/zh-cn/docs/faq.html",
       "meta": {}
@@ -177,10 +182,5 @@
       "link": "/zh-cn/docs/user_doc/system-manual.html",
       "meta": {}
     }
-    {
-      "filename": "microbench.md",
-      "link": "/zh-cn/docs/user_doc/microbench.html",
-      "meta": {}
-    }
   ]
 }
diff --git a/site_config/development.js b/site_config/development.js
index b4a1b8b..c01c271 100755
--- a/site_config/development.js
+++ b/site_config/development.js
@@ -121,6 +121,10 @@ export default {
                     {
                         title: '参与贡献-CommitMessage需知',
                         link: '/zh-cn/docs/development/commit_message.html',
+                    },
+                    {
+                        title: '参与贡献-微基准测试',
+                        link: '/zh-cn/docs/development/microbench.html',
                     }
                 ]
             },
diff --git a/site_config/docs1-2-1.js b/site_config/docs1-2-1.js
index 67bab22..d02e94d 100644
--- a/site_config/docs1-2-1.js
+++ b/site_config/docs1-2-1.js
@@ -117,16 +117,6 @@ export default {
                 ]
             },
             {
-                title: '源码分析',
-                children: [
-                    {
-                        title: 'DS微基准测试',
-                        target: '_blank',
-                        link: 
'/zh-cn/docs/1.2.1/user_doc/microbench-1.2.html=zh_CN&lang=zh'
-                    }
-                ]
-            },
-            {
                 title: '版本升级',
                 children: [
                     {

Reply via email to