自定义记速器输出

有时候我们希望记速器能够按照我们指定个样式输出,或者希望能有其他不同的操作,希望记速器可以更加的灵活,CSpeed记速器提供了接口来设置记速时的具体操作。

  1. 我们可以通过setEveryPattern实现自定义记速输出内容,SpeedEvent是包含了本次记速信息的实体,但是SpeedEvent中的信息是未格式化的,所以在使用之前需要将其转换成我们需要的格式,CSpeed提供了StringUtil工具类进行格式转换。
    • SpeedEvent是不限制时间戳单位是ms还是ns的,但是CSpeed内置实现的记速器都是ns单位。
      MultiThreadRecorder recorder = MultiThreadRecorder.build("setEveryPatternTest");
      recorder.setEveryPattern((event)->{
       System.out.println("耗时" + StringUtil.detailNs(event.getRunTime()));
      }).collect(()->{
       System.out.println("执行测试!");
      }).setCount(5).run().stop();
      
  2. 同理可以通过setStatisticPattern接口实现自定义统计输出,StatisticPattern输出两个参数name是记速器名称,list是记录集记录的每次耗时情况的列表,CSpeed内置的都是List<Long>
    • CSpeed提供了StatisticsUtil工具类进行统计,但是在统计之前需要对数组进行排序。
      MultiThreadRecorder recorder = MultiThreadRecorder.build("setStatisticPatternTest");
      recorder.setStatisticPattern((name, list)->{
       ((List<Long>)list).sort((a, b) -> (int) (a - b));
       System.out.println(name + "平均耗时: " + StringUtil.detailNs((long) StatisticsUtil.mean((List<Long>) list)));
      }).collect(()->{
       System.out.println("执行测试!");
      }).setCount(5).run().stop();