惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
Last Week in AI
Last Week in AI
月光博客
月光博客
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
U
Unit 42
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
H
Hacker News: Front Page
Recent Announcements
Recent Announcements
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
小众软件
小众软件
P
Palo Alto Networks Blog
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest
S
Secure Thoughts
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
O
OpenAI News
S
Securelist
云风的 BLOG
云风的 BLOG
H
Help Net Security
T
Troy Hunt's Blog

Rust

RustScript: 给你的 Rust 项目带来脚本化功能 - V2EX RUST 语法极其丑陋 - V2EX 一款跑在终端里的本地优先密码管理器,用全屏 TUI 管理账号、密钥和安全笔记。 - V2EX 如何理解 rust 闭包的借用值机制? 被借用的值在闭包内到底是什么类型? [开源] Best of RS - 一个由 Rust 编写的追踪 Rust 开源趋势的全栈 web 项目 - V2EX Rust 真是非常适合 AI vibe coding 的语言 - V2EX Pumpkin - 使用 Rust 开发的高性能 Minecraft 服务端 - V2EX 开源这两天 Vibe 的 Rust 重写的 OpenClaw - V2EX 用 rust 写了一个非常简单的局域网文本同步的小玩意 - V2EX [寻求帮助 Linux ] 用 rust 写了一个跨平台输入监听库(鼠标键盘) - V2EX Contributions to Rust and LLVM in 2025 - V2EX Linux 内核中的 rust - V2EX 2025 年度 Rust 语言社区调查 已经发布 - V2EX rust 让我抓狂、擦汗 - V2EX 推荐一款我写的动态配置语言: Faml - V2EX 如何看待 Rust? - V2EX Rust Web 开发脚手架 v0.6 发布啦! - V2EX rathole 这个项目是不维护了吗? 之前那个 rust 贡献大佬找到工作了,找他的团队还不少 - V2EX 介绍一个 like rails 的 rust 框架。 性能和开发速度都快。 - V2EX 除了写小工具外再也不想用 Rust 了 - V2EX rust 我想你了 - V2EX rust 程序员的硬盘是多大的? nodejs 继任者? - V2EX rust 练手写的,仿 uv 包管理器 av - V2EX Rust 的安全神话?为何在关键系统如数据库、大模型代码中仍选 C++ rust 实现的抓包存盘的程序 nsave 有人使用 Rust 重构过旧项目吗? - V2EX 使用 WebAssembly 构建的高性能在线计算工具 V2EX tikio 里面的代码怎么调试呢 有人在用 rust 写 web api 吗? rust 来得快去得也快 - V2EX rust 的有没有什么好的论坛? - V2EX 这里搞 Rust 的多吗? - V2EX 目前 Rust 最好的开发工具是哪个? - V2EX rust 编译报错函数重复定义 - V2EX Rust 学习几个月之后,真正要自己写的时候就懵逼 - V2EX 关于 rust axum 中使用 gprc 的一个疑惑 - V2EX std::net::UdpSocket 的 shutdown 机制是我理解出了问题么? - V2EX 写了一个从 modelscope 下载模型的 crate - V2EX 看到这样的 rust 代码要懵逼了,不知道咋入手,求指导 - V2EX Rust 两次入门后,尝试写一个 web 项目,懵逼中~ - V2EX 求帮打包个 exe - V2EX Rust HTTP Client, Golang tls-client/utls 的完美替代品 - V2EX Rust 编写的高性能 HTTP/HTTPS/SOCKS5 代理服务器 - V2EX Rust API 开发脚手架 - V2EX FnOne 特征是至少调用一次还是只能调用一次? - V2EX 大佬们,一人来一道 Rust 面试题,准备年后跳槽 - V2EX 请教 rust 如何做到交叉编译 - V2EX 理了一下手上惯用的一些命令行小工具,发现蛮多是 rust 写的。是不是 rust 也适合做这种小工具 - V2EX rust 怎么不通过管理员权限的情况下拿到 windows 用户所有的 uwp 应用名称,图标和路径 - V2EX 统计下放弃 RUST 的人的数量=== - V2EX 关于 Rust 所有权,如果对 mut 变量进行嵌套 mut 引用该怎么理解?
太快了! Rust 太快了! - V2EX
cKnight · 2025-09-18 · via Rust

1. 背景

LZ 是一名在职的 Java boy ,花了上周一周的时间入门了 Rust 。周末使用 axum 写了个 web 项目,模拟了 SpringMVC 的架构。

2. 对比

均在我 mac 笔记本中进行测试

2.1 占用资源

这里可能不太公平。
Java 项目用了我之前的开源项目,虽然是个完整的项目但是也不是很大。没有打包成 jar ,使用 idea 启动,通过活动检测器根据 pid 查找发现占用内存494.2MB,JVM 配置:-Xms256m -Xmx4g 。
Rust 启动后发现内存占用为 2.0MB!!! 我人都傻了,虽然说是个很简单的项目,但是项目中必要的功能都有。

2.2 压测

为了进一步的看到差距,我开始了压测,代码如下。为了减少变量,没有加入 IO 操作,但也是正常的业务功能。
JAVA

      @Override
    public AiUserVO loginTest(AiUserReq userReq) {
        CommonUtils.checkArgs(userReq.getAccountNo(),userReq.getPassword());
        AiUser user = AiUser.builder().accountNo("admin").password("admin").name("admin").build();
        user.setId(1941040891798581249L);
        //校验登录
//        checkLogin(user,userReq);
        AiUserVO result = ConvertUtils.beanProcess(user, AiUserVO.class);
        //处理用户角色
//        processUserRole(user,result);
        //生成 token
        String token = genToken(user);
        result.setToken(token);
        //放入 redis
        String key = CacheKeyEnum.format(CacheKeyEnum.ADMIN_LOGIN_KEY,user.getId(),token);
        SysCacheUserDto sysCacheUserDto = ConvertUtils.beanProcess(result, SysCacheUserDto.class);
        //删除原始 token
//        removeToken(user.getId());
//        redisCacheComponent.set(key,JSONObject.toJSONString(sysCacheUserDto),TimeConstant.ONE_DAY * 12);
        return result;
    }

RUST

pub async fn login(user:UserReq)->Res<UserVO> {
    // 查询逻辑
    let user_do = match query_user(&user.account_no, &user.password).await {
        Some(user_do) => user_do,
        None => return Res::build(FAIL),
    };
    let mut user_vo:UserVO = user_do.into();
    //加密
    let token = match security_utils::aes_encrypt(&user_vo.id.to_string()) {
        Ok(token) => token,
        Err(_) => return Res::build(FAIL),
    };
    user_vo.token = token;
    let key = SYSTEM_USER.key().format(&[&user_vo.id.to_string()]);
    //删除缓存
    GlobalCache::del(&key);
    //放入缓存
    GlobalCache::set(key,serde_json::to_string(&user_vo).unwrap());
    Res::success(user_vo)
}

/**
 * 查询用户
 */
async fn query_user(account_no:&str,pwd:&str)->Option<UserDO> {
    let user = UserDO{
        id:1912753992656158721,
        name:"admin".to_string(),
        account_no:"admin".to_string(),
        status:true,
    };
    Some(user)
}

压测配置如下

Name: 线程组-30
Number of Threads: 200
Ramp-Up Period: 30 
Loop Count: 1
Scheduler:
  Duration: 90

Name: 线程组-90
Number of Threads: 200
Ramp-Up Period: 30   
Loop Count: 1
Scheduler:
  Startup Delay: 90
  Duration: 90

压测流程如下

阶段一:0~30 秒启动 200 线程 → 持续到第 90 秒
阶段二:从第 90 秒开始,30 秒内启动 300 线程 → 持续到第 180 秒

压测结果对比如下

指标 RUST JAVA 差异
平均响应时间 3~4 ms 6~8 ms ↑ 上升 50%~100%
最大响应时间 17 ms 26 ms ↑ 上升 53%
99% 百分位 11~15 ms 15~20 ms ↑ 上升 30%~45%
吞吐量 6.7 → 10.0 req/sec 6.7 → 10.0 req/sec ✅ 相同
异常率 0% 0% ✅ 相同
数据包大小 294 B 489 B ↑ 增加 66%