当前位置: 首页 > article >正文

并发测试Java(spring boot) VS C#(ASP.NET CORE)

环境,操作系统:win11,数据库pgsql16。 

测试工具:oha。

测试内容:做1000的并发,将单张100万行的数据表,分页取数,取前两页数据返回给前端。

Java spring boot 使用OpenJDK21,代码如下:

package com.example.demo.service;

import com.example.demo.entity.Tb1;
import com.example.demo.repository.Tb1Repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class Tb1Service {

    @Autowired
    private Tb1Repository tb1Repository;

    /**
     * 获取前两页的数据,每页的大小由pageSize决定
     *
     * @param pageSize 每页记录数
     * @return 前两页的数据列表
     */
    public List<Tb1> getFirstTwoPages(int pageSize) {
        List<Tb1> result = new ArrayList<>();

        Pageable firstPage = PageRequest.of(0, pageSize);
        Pageable secondPage = PageRequest.of(1, pageSize);

        tb1Repository.findAll(firstPage).forEach(result::add);
        tb1Repository.findAll(secondPage).forEach(result::add);

        return result;
    }
}

测试结果:

c# asp.net core使用的.net8,代码如下:

public async Task<ActionResult<IEnumerable<Tb1>>> GetTb1s(int pageSize = 5)
{
    // 第一次查询:获取第一页记录
    var firstPageQuery = _context.Tb1s
        .AsNoTracking();
      
                  

    var firstPage = await firstPageQuery
        .OrderBy(x => x.Id) // 假设有一个名为Id的列用于排序
        .Skip(0)
        .Take(pageSize)
        .ToListAsync();

    // 第二次查询:获取第二页记录
    var secondPageQuery = _context.Tb1s
        .AsNoTracking();
      
                  

    var secondPage = await secondPageQuery
        .OrderBy(x => x.Id)
        .Skip(pageSize)
        .Take(pageSize)
        .ToListAsync();

    // 合并第一页和第二页的结果
    var combinedResult = firstPage.Concat(secondPage).ToList();

    // 返回合并结果以 JSON 格式给前端
    return Ok(combinedResult);
}

测试结果:

从测试结果上看,spring boot花了93秒,而 asp.net core只用了1.5秒,c#在这个场景比Java快了62倍。


http://www.kler.cn/a/442157.html

相关文章:

  • 初学stm32 --- CAN
  • 基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)
  • Pytorch|YOLO
  • Oracle查询-in条件超过1000
  • 【论文阅读笔记】人工智能胃镜在盲区检测和自主采图中的应用
  • php-2025面试题准备
  • SpringAI人工智能开发框架002---SpringAI项目搭建_依赖导入_maven仓库引入_接口中转
  • 力扣-图论-16【算法学习day.66】
  • 调用钉钉接口发送消息
  • Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接
  • arm Rk3588 更新固件
  • nodepad之正则表达式删除无关键字符串的行
  • 详解MySQL在Windows上的安装
  • 17、ConvMixer模型原理及其PyTorch逐行实现
  • Springboot下出现java.awt.HeadlessException的原因及解决方案
  • HW机试题库(个人总结)
  • Metaploit-永恒之蓝漏洞利用
  • [Shader] 【图形渲染】【Unity Shader】Shader数学基础1-笛卡儿坐标系的应用
  • 短视频矩阵贴牌:打造品牌新势力的策略与实践
  • IOS通过WDA自动化中遇到的问题
  • 数据结构(Java版)第六期:LinkedList与链表(一)
  • 解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题
  • 前端的知识(部分)
  • 太阳能发电模拟系统设计与实现
  • Rust中自定义Debug调试输出
  • 101. 对称二叉树(java)