You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2019/07/15 09:07:42 UTC

[GitHub] [skywalking] dmsolr edited a comment on issue #3064: To improve DataCarrier

dmsolr edited a comment on issue #3064: To improve DataCarrier 
URL: https://github.com/apache/skywalking/issues/3064#issuecomment-511273975
 
 
   1. The max capacity is 40k with default initial capacity. It showed that the ArrayList seem like better in ops. And the reused ListedList is better at GC.
   ```java
       @Benchmark
       public void testReusedArray() {
           List<SampleData> consumerList = new ArrayList<SampleData>();
           for (int times=0; times<1000; times++) {
               for (int pos = 0; pos < 40000; pos++) {
                   consumerList.add(new SampleData());
               }
               consumerList.clear();
           }
       }
   
       @Benchmark
       public void testLinked() {
           for (int times=0; times<1000; times++) {
               List<SampleData> consumerList = new LinkedList<SampleData>();
   
               for (int pos = 0; pos < 40000; pos++) {
                   consumerList.add(new SampleData());
               }
           }
       }
   
       @Benchmark
       public void testReusedLinked() {
           List<SampleData> consumerList = new LinkedList<SampleData>();
           for (int times=0; times<1000; times++) {
   
               for (int pos = 0; pos < 40000; pos++) {
                   consumerList.add(new SampleData());
               }
               consumerList.clear();
           }
       }
   ```
   
   Result:
   ```
   Benchmark                                                                   Mode  Cnt           Score          Error   Units
   LinkedArrayBenchmark.testReusedArray                                       thrpt    5           4.099 ±        0.254   ops/s
   LinkedArrayBenchmark.testReusedArray:·gc.alloc.rate                        thrpt    5        3577.493 ±      218.971  MB/sec
   LinkedArrayBenchmark.testReusedArray:·gc.alloc.rate.norm                   thrpt    5   960569530.436 ±        0.529    B/op
   LinkedArrayBenchmark.testReusedArray:·gc.churn.PS_Eden_Space               thrpt    5        3579.288 ±      227.314  MB/sec
   LinkedArrayBenchmark.testReusedArray:·gc.churn.PS_Eden_Space.norm          thrpt    5   961045357.161 ±  7069943.693    B/op
   LinkedArrayBenchmark.testReusedArray:·gc.churn.PS_Survivor_Space           thrpt    5           2.369 ±        0.343  MB/sec
   LinkedArrayBenchmark.testReusedArray:·gc.churn.PS_Survivor_Space.norm      thrpt    5      636105.700 ±    95920.377    B/op
   LinkedArrayBenchmark.testReusedArray:·gc.count                             thrpt    5        1133.000                 counts
   LinkedArrayBenchmark.testReusedArray:·gc.time                              thrpt    5        3254.000                     ms
   
   LinkedArrayBenchmark.testReusedLinked                                      thrpt    5           1.578 ±        0.068   ops/s
   LinkedArrayBenchmark.testReusedLinked:·gc.alloc.rate                       thrpt    5        2753.590 ±      112.877  MB/sec
   LinkedArrayBenchmark.testReusedLinked:·gc.alloc.rate.norm                  thrpt    5  1920000059.000 ±        0.001    B/op
   LinkedArrayBenchmark.testReusedLinked:·gc.churn.PS_Eden_Space              thrpt    5        2752.897 ±      113.153  MB/sec
   LinkedArrayBenchmark.testReusedLinked:·gc.churn.PS_Eden_Space.norm         thrpt    5  1919516672.000 ±   713769.991    B/op
   LinkedArrayBenchmark.testReusedLinked:·gc.churn.PS_Survivor_Space          thrpt    5           6.904 ±        0.680  MB/sec
   LinkedArrayBenchmark.testReusedLinked:·gc.churn.PS_Survivor_Space.norm     thrpt    5     4813619.200 ±   404066.441    B/op
   LinkedArrayBenchmark.testReusedLinked:·gc.count                            thrpt    5         885.000                 counts
   LinkedArrayBenchmark.testReusedLinked:·gc.time                             thrpt    5        2996.000                   ms
   
   LinkedArrayBenchmark.testLinked                                            thrpt    5           2.489 ±        0.077   ops/s
   LinkedArrayBenchmark.testLinked:·gc.alloc.rate                             thrpt    5        4346.145 ±      145.163  MB/sec
   LinkedArrayBenchmark.testLinked:·gc.alloc.rate.norm                        thrpt    5  1920000016.881 ±        1.402    B/op
   LinkedArrayBenchmark.testLinked:·gc.churn.PS_Eden_Space                    thrpt    5        4347.414 ±      163.445  MB/sec
   LinkedArrayBenchmark.testLinked:·gc.churn.PS_Eden_Space.norm               thrpt    5  1920547279.983 ± 12167953.775    B/op
   LinkedArrayBenchmark.testLinked:·gc.churn.PS_Survivor_Space                thrpt    5          10.691 ±        1.312  MB/sec
   LinkedArrayBenchmark.testLinked:·gc.churn.PS_Survivor_Space.norm           thrpt    5     4722251.934 ±   452198.476    B/op
   LinkedArrayBenchmark.testLinked:·gc.count                                  thrpt    5        1417.000                 counts
   LinkedArrayBenchmark.testLinked:·gc.time                                   thrpt    5        4794.000                     ms
   ```
   
   2. This part tests default capacity and the max size of List is 1000.
   ```java
       @Benchmark
       public void testArrayCap1000() {
           ArrayList<SampleData> list = new ArrayList<SampleData>();
           for (int i=0; i<1000; i++) {
               list.add(new SampleData());
           }
       }
   
       @Benchmark
       public void testLinkedCap1000() {
           LinkedList<SampleData> list = new LinkedList<SampleData>();
           for (int i=0; i<1000; i++) {
               list.add(new SampleData());
           }
       }
   ```
   
   Result:
   
   ```java
   Benchmark                                                                   Mode  Cnt           Score          Error   Units
   LinkedArrayBenchmark.testArrayCap1000                                      thrpt    5      176522.532 ±     4448.276   ops/s
   LinkedArrayBenchmark.testArrayCap1000:·gc.alloc.rate                       thrpt    5        6252.366 ±      157.348  MB/sec
   LinkedArrayBenchmark.testArrayCap1000:·gc.alloc.rate.norm                  thrpt    5       39000.000 ±        0.001    B/op
   LinkedArrayBenchmark.testArrayCap1000:·gc.churn.PS_Eden_Space              thrpt    5        6252.940 ±      161.485  MB/sec
   LinkedArrayBenchmark.testArrayCap1000:·gc.churn.PS_Eden_Space.norm         thrpt    5       39003.545 ±       51.090    B/op
   LinkedArrayBenchmark.testArrayCap1000:·gc.churn.PS_Survivor_Space          thrpt    5           0.803 ±        0.219  MB/sec
   LinkedArrayBenchmark.testArrayCap1000:·gc.churn.PS_Survivor_Space.norm     thrpt    5           5.007 ±        1.286    B/op
   LinkedArrayBenchmark.testArrayCap1000:·gc.count                            thrpt    5        1937.000                 counts
   LinkedArrayBenchmark.testArrayCap1000:·gc.time                             thrpt    5        1473.000                     ms
   
   LinkedArrayBenchmark.testLinkedCap1000                                     thrpt    5      101449.110 ±     7841.344   ops/s
   LinkedArrayBenchmark.testLinkedCap1000:·gc.alloc.rate                      thrpt    5        4422.601 ±      342.269  MB/sec
   LinkedArrayBenchmark.testLinkedCap1000:·gc.alloc.rate.norm                 thrpt    5       48000.000 ±        0.001    B/op
   LinkedArrayBenchmark.testLinkedCap1000:·gc.churn.PS_Eden_Space             thrpt    5        4425.733 ±      336.180  MB/sec
   LinkedArrayBenchmark.testLinkedCap1000:·gc.churn.PS_Eden_Space.norm        thrpt    5       48034.296 ±      229.819    B/op
   LinkedArrayBenchmark.testLinkedCap1000:·gc.churn.PS_Survivor_Space         thrpt    5           0.872 ±        0.304  MB/sec
   LinkedArrayBenchmark.testLinkedCap1000:·gc.churn.PS_Survivor_Space.norm    thrpt    5           9.466 ±        3.005    B/op
   LinkedArrayBenchmark.testLinkedCap1000:·gc.count                           thrpt    5        1371.000                 counts
   LinkedArrayBenchmark.testLinkedCap1000:·gc.time                            thrpt    5         997.000                     ms
   ```
   
   3. This part tests default capacity and the max size of List is 40000. 
   ```java
       @Benchmark
       public void testArrayCap40000() {
           ArrayList<SampleData> list = new ArrayList<SampleData>();
           for (int i=0; i<40000; i++) {
               list.add(new SampleData());
           }
       }
   
       @Benchmark
       public void testLinkedCap40000() {
           LinkedList<SampleData> list = new LinkedList<SampleData>();
           for (int i=0; i<40000; i++) {
               list.add(new SampleData());
           }
       }
   ```
   
   Result:
   ```
   Benchmark                                                                   Mode  Cnt           Score          Error   Units
   LinkedArrayBenchmark.testArrayCap40000                                     thrpt    5        3367.247 ±      457.619   ops/s
   LinkedArrayBenchmark.testArrayCap40000:·gc.alloc.rate                      thrpt    5        4677.556 ±      635.732  MB/sec
   LinkedArrayBenchmark.testArrayCap40000:·gc.alloc.rate.norm                 thrpt    5     1529496.013 ±        0.002    B/op
   LinkedArrayBenchmark.testArrayCap40000:·gc.churn.PS_Eden_Space             thrpt    5        4690.330 ±      655.901  MB/sec
   LinkedArrayBenchmark.testArrayCap40000:·gc.churn.PS_Eden_Space.norm        thrpt    5     1533628.010 ±     7701.263    B/op
   LinkedArrayBenchmark.testArrayCap40000:·gc.churn.PS_Survivor_Space         thrpt    5           6.110 ±        2.169  MB/sec
   LinkedArrayBenchmark.testArrayCap40000:·gc.churn.PS_Survivor_Space.norm    thrpt    5        1995.479 ±      485.706    B/op
   LinkedArrayBenchmark.testArrayCap40000:·gc.count                           thrpt    5        1473.000                 counts
   LinkedArrayBenchmark.testArrayCap40000:·gc.time                            thrpt    5        1641.000                     ms
   
   LinkedArrayBenchmark.testLinkedCap40000                                    thrpt    5        2367.759 ±      121.662   ops/s
   LinkedArrayBenchmark.testLinkedCap40000:·gc.alloc.rate                     thrpt    5        4128.794 ±      211.930  MB/sec
   LinkedArrayBenchmark.testLinkedCap40000:·gc.alloc.rate.norm                thrpt    5     1920000.018 ±        0.001    B/op
   LinkedArrayBenchmark.testLinkedCap40000:·gc.churn.PS_Eden_Space            thrpt    5        4127.384 ±      224.263  MB/sec
   LinkedArrayBenchmark.testLinkedCap40000:·gc.churn.PS_Eden_Space.norm       thrpt    5     1919330.567 ±    15068.179    B/op
   LinkedArrayBenchmark.testLinkedCap40000:·gc.churn.PS_Survivor_Space        thrpt    5          10.019 ±        0.828  MB/sec
   LinkedArrayBenchmark.testLinkedCap40000:·gc.churn.PS_Survivor_Space.norm   thrpt    5        4658.864 ±      272.178    B/op
   LinkedArrayBenchmark.testLinkedCap40000:·gc.count                          thrpt    5        1310.000                 counts
   LinkedArrayBenchmark.testLinkedCap40000:·gc.time                           thrpt    5        4550.000                     ms
   ```
   
   4. This part tests different initial capacity(1, 10, 8000, 40000). The max length is 40k. Here's a odd appearance. We can notice the initial capacity is 10(default value) will execute the most GC times and cost the most time. But its ops is better than others.
   (I have executed several times, the results almost are the same.)
   
   ```java
       @Benchmark
       public void testArrayStart1() {
           List<SampleData> consumerList = new ArrayList<SampleData>(1);
           for (int pos = 0; pos < 40000; pos++) {
               consumerList.add(new SampleData());
           }
       }
   
       @Benchmark
       public void testArrayStart10() {
           List<SampleData> consumerList = new ArrayList<SampleData>(10);
           for (int pos = 0; pos < 40000; pos++) {
               consumerList.add(new SampleData());
           }
       }
       @Benchmark
       public void testArrayStart8000() {
           List<SampleData> consumerList = new ArrayList<SampleData>(8000);
           for (int pos = 0; pos < 40000; pos++) {
               consumerList.add(new SampleData());
           }
       }
   
       @Benchmark
       public void testArrayStart40000() {
           List<SampleData> consumerList = new ArrayList<SampleData>(40000);
           for (int pos = 0; pos < 40000; pos++) {
               consumerList.add(new SampleData());
           }
       }
   ```
   Result:
   ```
   LinkedArrayBenchmark.testArrayStart1                                       thrpt    5     3650.344 ±  430.214   ops/s
   LinkedArrayBenchmark.testArrayStart1:·gc.alloc.rate                        thrpt    5     4814.170 ±  567.231  MB/sec
   LinkedArrayBenchmark.testArrayStart1:·gc.alloc.rate.norm                   thrpt    5  1452104.012 ±    0.001    B/op
   LinkedArrayBenchmark.testArrayStart1:·gc.churn.PS_Eden_Space               thrpt    5     4825.797 ±  575.542  MB/sec
   LinkedArrayBenchmark.testArrayStart1:·gc.churn.PS_Eden_Space.norm          thrpt    5  1455598.022 ± 5557.754    B/op
   LinkedArrayBenchmark.testArrayStart1:·gc.churn.PS_Survivor_Space           thrpt    5        5.943 ±    1.387  MB/sec
   LinkedArrayBenchmark.testArrayStart1:·gc.churn.PS_Survivor_Space.norm      thrpt    5     1792.091 ±  297.976    B/op
   LinkedArrayBenchmark.testArrayStart1:·gc.count                             thrpt    5     1513.000             counts
   LinkedArrayBenchmark.testArrayStart1:·gc.time                              thrpt    5     1637.000                 ms
   
   LinkedArrayBenchmark.testArrayStart10                                      thrpt    5     4557.648 ±  121.325   ops/s
   LinkedArrayBenchmark.testArrayStart10:·gc.alloc.rate                       thrpt    5     6331.232 ±  168.013  MB/sec
   LinkedArrayBenchmark.testArrayStart10:·gc.alloc.rate.norm                  thrpt    5  1529496.010 ±    0.001    B/op
   LinkedArrayBenchmark.testArrayStart10:·gc.churn.PS_Eden_Space              thrpt    5     6347.599 ±  190.562  MB/sec
   LinkedArrayBenchmark.testArrayStart10:·gc.churn.PS_Eden_Space.norm         thrpt    5  1533442.650 ± 6747.452    B/op
   LinkedArrayBenchmark.testArrayStart10:·gc.churn.PS_Survivor_Space          thrpt    5        8.601 ±    1.989  MB/sec
   LinkedArrayBenchmark.testArrayStart10:·gc.churn.PS_Survivor_Space.norm     thrpt    5     2078.243 ±  514.259    B/op
   LinkedArrayBenchmark.testArrayStart10:·gc.count                            thrpt    5     1992.000             counts
   LinkedArrayBenchmark.testArrayStart10:·gc.time                             thrpt    5     2371.000                 ms
   
   LinkedArrayBenchmark.testArrayStart8000                                    thrpt    5     3822.186 ±  109.671   ops/s
   LinkedArrayBenchmark.testArrayStart8000:·gc.alloc.rate                     thrpt    5     4797.774 ±  138.117  MB/sec
   LinkedArrayBenchmark.testArrayStart8000:·gc.alloc.rate.norm                thrpt    5  1382080.011 ±    0.001    B/op
   LinkedArrayBenchmark.testArrayStart8000:·gc.churn.PS_Eden_Space            thrpt    5     4807.450 ±  140.827  MB/sec
   LinkedArrayBenchmark.testArrayStart8000:·gc.churn.PS_Eden_Space.norm       thrpt    5  1384866.917 ± 5337.475    B/op
   LinkedArrayBenchmark.testArrayStart8000:·gc.churn.PS_Survivor_Space        thrpt    5        4.457 ±    0.342  MB/sec
   LinkedArrayBenchmark.testArrayStart8000:·gc.churn.PS_Survivor_Space.norm   thrpt    5     1283.812 ±   64.992    B/op
   LinkedArrayBenchmark.testArrayStart8000:·gc.count                          thrpt    5     1507.000             counts
   LinkedArrayBenchmark.testArrayStart8000:·gc.time                           thrpt    5     1526.000                 ms
   
   LinkedArrayBenchmark.testArrayStart40000                                   thrpt    5     4312.118 ±   37.028   ops/s
   LinkedArrayBenchmark.testArrayStart40000:·gc.alloc.rate                    thrpt    5     4386.398 ±   37.389  MB/sec
   LinkedArrayBenchmark.testArrayStart40000:·gc.alloc.rate.norm               thrpt    5  1120016.010 ±    0.001    B/op
   LinkedArrayBenchmark.testArrayStart40000:·gc.churn.PS_Eden_Space           thrpt    5     4390.996 ±   48.359  MB/sec
   LinkedArrayBenchmark.testArrayStart40000:·gc.churn.PS_Eden_Space.norm      thrpt    5  1121190.745 ± 9368.223    B/op
   LinkedArrayBenchmark.testArrayStart40000:·gc.churn.PS_Survivor_Space       thrpt    5        5.880 ±    0.514  MB/sec
   LinkedArrayBenchmark.testArrayStart40000:·gc.churn.PS_Survivor_Space.norm  thrpt    5     1501.392 ±  143.043    B/op
   LinkedArrayBenchmark.testArrayStart40000:·gc.count                         thrpt    5     1378.000             counts
   LinkedArrayBenchmark.testArrayStart40000:·gc.time                          thrpt    5     1602.000                 ms
   ```
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services