From 39abdb69bc591f360da04b949ddcc26e9b656764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B2=8D=E4=BC=9F=E5=8D=8E?= Date: Thu, 9 Aug 2018 17:49:22 +0800 Subject: [PATCH] optimize code structure to economize computing resources (#1536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 优化代码结构,减少不必要的计算,节省计算资源 * 优化代码结构,减少不必要的计算,节省计算资源 --- .../global/std/ResponseTimeDistributionSpanListener.java | 9 +++++---- .../ResponseTimeDistributionSpanListenerTestCase.java | 1 + .../service/IResponseTimeDistributionConfigService.java | 8 ++++++++ .../service/ResponseTimeDistributionConfigService.java | 7 +++++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListener.java index ea14849fb..e467d5244 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListener.java @@ -73,15 +73,16 @@ public class ResponseTimeDistributionSpanListener implements FirstSpanListener { } int getStep(int duration) { - int countOfResponseTimeSteps = configService.getResponseTimeStep() * configService.getCountOfResponseTimeSteps(); int responseTimeStep = configService.getResponseTimeStep(); + int countOfResponseTimeSteps = configService.getCountOfResponseTimeSteps(); + int totalTimeOfResponseTimeSteps = configService.getTotalTimeOfResponseTimeSteps(); - if (duration > countOfResponseTimeSteps) { - return countOfResponseTimeSteps / responseTimeStep; + if (duration > totalTimeOfResponseTimeSteps) { + return countOfResponseTimeSteps; } else if (duration <= responseTimeStep) { return 0; } else { - return (int)Math.ceil((double)duration / (double)responseTimeStep) - 1; + return (int) Math.ceil((double) duration / (double) responseTimeStep) - 1; } } diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListenerTestCase.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListenerTestCase.java index 3a16c5753..8a8ddbff6 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListenerTestCase.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/global/std/ResponseTimeDistributionSpanListenerTestCase.java @@ -42,6 +42,7 @@ public class ResponseTimeDistributionSpanListenerTestCase { IResponseTimeDistributionConfigService service = Mockito.mock(IResponseTimeDistributionConfigService.class); Mockito.when(service.getResponseTimeStep()).thenReturn(50); Mockito.when(service.getCountOfResponseTimeSteps()).thenReturn(40); + Mockito.when(service.getTotalTimeOfResponseTimeSteps()).thenReturn(2050); ModuleDefine module = Mockito.mock(ModuleDefine.class); Whitebox.setInternalState(module, "loadedProviders", loadedProviders); diff --git a/apm-collector/apm-collector-configuration/collector-configuration-define/src/main/java/org/apache/skywalking/apm/collector/configuration/service/IResponseTimeDistributionConfigService.java b/apm-collector/apm-collector-configuration/collector-configuration-define/src/main/java/org/apache/skywalking/apm/collector/configuration/service/IResponseTimeDistributionConfigService.java index 7cec4c441..5a6d25e8c 100644 --- a/apm-collector/apm-collector-configuration/collector-configuration-define/src/main/java/org/apache/skywalking/apm/collector/configuration/service/IResponseTimeDistributionConfigService.java +++ b/apm-collector/apm-collector-configuration/collector-configuration-define/src/main/java/org/apache/skywalking/apm/collector/configuration/service/IResponseTimeDistributionConfigService.java @@ -28,4 +28,12 @@ public interface IResponseTimeDistributionConfigService extends Service { int getResponseTimeStep(); int getCountOfResponseTimeSteps(); + + /** + * Equals to getResponseTimeStep() * getCountOfResponseTimeSteps() ,just for economizes computing resources + * + * @return + */ + int getTotalTimeOfResponseTimeSteps(); + } diff --git a/apm-collector/apm-collector-configuration/collector-configuration-provider/src/main/java/org/apache/skywalking/apm/collector/configuration/service/ResponseTimeDistributionConfigService.java b/apm-collector/apm-collector-configuration/collector-configuration-provider/src/main/java/org/apache/skywalking/apm/collector/configuration/service/ResponseTimeDistributionConfigService.java index cc50be2d8..87ed2a2c3 100644 --- a/apm-collector/apm-collector-configuration/collector-configuration-provider/src/main/java/org/apache/skywalking/apm/collector/configuration/service/ResponseTimeDistributionConfigService.java +++ b/apm-collector/apm-collector-configuration/collector-configuration-provider/src/main/java/org/apache/skywalking/apm/collector/configuration/service/ResponseTimeDistributionConfigService.java @@ -25,10 +25,12 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr private final int responseTimeStep; private final int countOfResponseTimeSteps; + private final int totalTimeOfResponseTimeSteps; public ResponseTimeDistributionConfigService(int responseTimeStep, int countOfResponseTimeSteps) { this.responseTimeStep = responseTimeStep; this.countOfResponseTimeSteps = countOfResponseTimeSteps + 1; + this.totalTimeOfResponseTimeSteps = this.responseTimeStep * this.countOfResponseTimeSteps; } @Override public int getResponseTimeStep() { @@ -38,4 +40,9 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr @Override public int getCountOfResponseTimeSteps() { return countOfResponseTimeSteps; } + + @Override + public int getTotalTimeOfResponseTimeSteps() { + return totalTimeOfResponseTimeSteps; + } }