optimize code structure to economize computing resources (#1536)

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

* 优化代码结构,减少不必要的计算,节省计算资源
This commit is contained in:
鲍伟华 2018-08-09 17:49:22 +08:00 committed by Wu Sheng
parent 114c2f7a42
commit 39abdb69bc
4 changed files with 21 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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();
}

View File

@ -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;
}
}