提交 6db0d08f 编写于 作者: 鲍伟华 提交者: 彭勇升 pengys

optimize code structure to economize computing resources (#1536)

* 优化代码结构,减少不必要的计算,节省计算资源

* 优化代码结构,减少不必要的计算,节省计算资源
上级 42028e60
...@@ -73,15 +73,16 @@ public class ResponseTimeDistributionSpanListener implements FirstSpanListener { ...@@ -73,15 +73,16 @@ public class ResponseTimeDistributionSpanListener implements FirstSpanListener {
} }
int getStep(int duration) { int getStep(int duration) {
int countOfResponseTimeSteps = configService.getResponseTimeStep() * configService.getCountOfResponseTimeSteps();
int responseTimeStep = configService.getResponseTimeStep(); int responseTimeStep = configService.getResponseTimeStep();
int countOfResponseTimeSteps = configService.getCountOfResponseTimeSteps();
int totalTimeOfResponseTimeSteps = configService.getTotalTimeOfResponseTimeSteps();
if (duration > countOfResponseTimeSteps) { if (duration > totalTimeOfResponseTimeSteps) {
return countOfResponseTimeSteps / responseTimeStep; return countOfResponseTimeSteps;
} else if (duration <= responseTimeStep) { } else if (duration <= responseTimeStep) {
return 0; return 0;
} else { } else {
return (int)Math.ceil((double)duration / (double)responseTimeStep) - 1; return (int) Math.ceil((double) duration / (double) responseTimeStep) - 1;
} }
} }
......
...@@ -42,6 +42,7 @@ public class ResponseTimeDistributionSpanListenerTestCase { ...@@ -42,6 +42,7 @@ public class ResponseTimeDistributionSpanListenerTestCase {
IResponseTimeDistributionConfigService service = Mockito.mock(IResponseTimeDistributionConfigService.class); IResponseTimeDistributionConfigService service = Mockito.mock(IResponseTimeDistributionConfigService.class);
Mockito.when(service.getResponseTimeStep()).thenReturn(50); Mockito.when(service.getResponseTimeStep()).thenReturn(50);
Mockito.when(service.getCountOfResponseTimeSteps()).thenReturn(40); Mockito.when(service.getCountOfResponseTimeSteps()).thenReturn(40);
Mockito.when(service.getTotalTimeOfResponseTimeSteps()).thenReturn(2050);
ModuleDefine module = Mockito.mock(ModuleDefine.class); ModuleDefine module = Mockito.mock(ModuleDefine.class);
Whitebox.setInternalState(module, "loadedProviders", loadedProviders); Whitebox.setInternalState(module, "loadedProviders", loadedProviders);
......
...@@ -28,4 +28,12 @@ public interface IResponseTimeDistributionConfigService extends Service { ...@@ -28,4 +28,12 @@ public interface IResponseTimeDistributionConfigService extends Service {
int getResponseTimeStep(); int getResponseTimeStep();
int getCountOfResponseTimeSteps(); int getCountOfResponseTimeSteps();
/**
* Equals to getResponseTimeStep() * getCountOfResponseTimeSteps() ,just for economizes computing resources
*
* @return
*/
int getTotalTimeOfResponseTimeSteps();
} }
...@@ -25,10 +25,12 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr ...@@ -25,10 +25,12 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr
private final int responseTimeStep; private final int responseTimeStep;
private final int countOfResponseTimeSteps; private final int countOfResponseTimeSteps;
private final int totalTimeOfResponseTimeSteps;
public ResponseTimeDistributionConfigService(int responseTimeStep, int countOfResponseTimeSteps) { public ResponseTimeDistributionConfigService(int responseTimeStep, int countOfResponseTimeSteps) {
this.responseTimeStep = responseTimeStep; this.responseTimeStep = responseTimeStep;
this.countOfResponseTimeSteps = countOfResponseTimeSteps + 1; this.countOfResponseTimeSteps = countOfResponseTimeSteps + 1;
this.totalTimeOfResponseTimeSteps = this.responseTimeStep * this.countOfResponseTimeSteps;
} }
@Override public int getResponseTimeStep() { @Override public int getResponseTimeStep() {
...@@ -38,4 +40,9 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr ...@@ -38,4 +40,9 @@ public class ResponseTimeDistributionConfigService implements IResponseTimeDistr
@Override public int getCountOfResponseTimeSteps() { @Override public int getCountOfResponseTimeSteps() {
return countOfResponseTimeSteps; return countOfResponseTimeSteps;
} }
@Override
public int getTotalTimeOfResponseTimeSteps() {
return totalTimeOfResponseTimeSteps;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册