zoukankan      html  css  js  c++  java
  • spring5 webflux测试

    ServerResponse方式

    @Configuration
    public class RouterFunctionConfiguration {
    
        @Bean
    //    @Autowired
        public RouterFunction<ServerResponse> personFindAll(UserRepository userRepository){
    
    
            return RouterFunctions.route(RequestPredicates.GET("/person/find/all"),
                    request ->{
                        Collection<User> users = userRepository.findAll();
    
                        Flux<User> userFlux = Flux.fromIterable(users);
                        return ServerResponse.ok().body(userFlux,User.class);
                    });
        }
    }

    测试

    
    
    @Test
    public void threadTestOrderBy() throws InterruptedException {

    final Long id=141284830240768L;
    int threadCount=100000;
    final CountDownLatch begin = new CountDownLatch(1);
    final CountDownLatch end = new CountDownLatch(threadCount);
    final int[] result={0,0};
    final Object lock = new Object();
    ExecutorService executorService = Executors.newFixedThreadPool(100);
    Long time1=System.currentTimeMillis();
    for (int i = 0; i < threadCount; i++) {
    Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
    try {
    begin.await();
    HttpParamsVo httpParamsVo = new HttpParamsVo(new HttpSecretVo(appKey,appSecret),params);
    String resultS = HttpClientSecretSendUtil.get(url, httpParamsVo);
    synchronized(lock){
    result[0]++;
    }
    } catch (Exception ex) {
    synchronized(lock) {
    result[1]++;
    }
    ex.printStackTrace();
    }finally{
    end.countDown();
    }
    }
    });
    executorService.submit(thread);
    }
    System.out.println(threadCount+"个线程开始");
    begin.countDown();
    end.await();
    Long time2=System.currentTimeMillis();
    System.out.println("耗时: "+(time2-time1)/1000+"秒");
    System.out.println(threadCount+"个线程更新结束");
    System.out.println("成功"+result[0]+",失败"+result[1]);
    }
    
    

    耗时

    servlet方式

    @GetMapping("/person/find/all")
        @ResponseBody
        public Collection<User> findAll(){
            return this.userRepository.findAll();
        }

    测试同上

    结果

    总结100W个线程的情况下

    spring 5提供的 webFlux 相比 servlet模型 慢了17秒

  • 相关阅读:
    pom变成红橙色
    拉链表
    Newsgroups数据集研究
    python 安装第三方包
    概率图(三)CRF条件随机场
    概率图(二)马尔科夫随机场MRF
    LDA主题模型
    TF-IDF算法
    mysql 自定义排序顺序
    [转]解决a different object with the same identifier value was already associated with the session错误
  • 原文地址:https://www.cnblogs.com/zfzf1/p/8507360.html
Copyright © 2011-2022 走看看