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

发布于:2024-12-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

环境,操作系统: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倍。


网站公告

今日签到

点亮在社区的每一天
去签到