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

为什么Bun查询数据库接口响应比Rust还快

bun的响应速度比rust快,表里三十多万条数据,我直接全查了。

app.get("/", async (c) => { // ===== 1. 查询计时 ===== const t1 = Date.now(); const weightRows = await db.execute(sql` SELECT * FROM "weight" ORDER BY "uuid" ASC `); const queryTime = Date.now() - t1; // ===== 2. 纯序列化计时(手动 JSON.stringify) ===== const t2 = Date.now(); const jsonString = JSON.stringify(weightRows); const serializeTime = Date.now() - t2; console.log( `[性能] 查询 ${queryTime}ms | 序列化 ${serializeTime}ms | 行数 ${weightRows.length}`, ); // ===== 3. 返回手动序列化结果,避免 c.json 二次序列化 ===== return c.body(jsonString, 200, { "Content-Type": "application/json; charset=utf-8", // 可选:告诉客户端内容长度,帮助进度条 "Content-Length": Buffer.byteLength(jsonString).toString(), }); }); rust 代码解读复制代码
async fn root(State(state): State<SharedState>) -> impl IntoResponse { let start = Instant::now(); let rows = sqlx::query_as::<_, WeightRawRow>("SELECT * FROM weight ORDER BY uuid") .fetch_all(&state.pool) .await .unwrap(); let query_time = start.elapsed(); println!( "查询完成: {}ms, 行数: {}", query_time.as_millis(), rows.len() ); let serialize_start = Instant::now(); let json_bytes = serde_json::to_vec(&rows).unwrap(); let serialize_time = serialize_start.elapsed(); println!("序列化耗时: {}ms", serialize_time.as_millis()); let total_time = start.elapsed(); println!("总耗时: {}ms", total_time.as_millis()); Response::builder() .header("content-type", "application/json") .body(Body::from(json_bytes)) .unwrap() }
http://www.jsqmd.com/news/1205032/

相关文章:

  • 【2017-11-02】MQTT与CoAP比较
  • 企业级Linux运维:自建YUM仓库实战指南
  • 格拉苏蒂中国官方售后服务中心|服务热线及办公地址权威信息通告(2026年7月更新) - 亨得利钟表维修中心
  • 2024技术趋势大揭秘:AI领跑,云边协同 (FW)
  • 39元V851se开发板视觉应用开发全解析
  • Ubuntu系统USB设备操作全指南与优化技巧
  • VLANeXt:一份可执行的VLA工程设计手册
  • Qt 一次性把多线程实现方式说清楚
  • Windows蓝屏错误码解析与系统故障排查指南
  • Start11工具:Win11开始菜单个性化定制指南
  • 千问可以生成excel吗?AI导出鸭一键解锁答案
  • dev机器出现Java 应用:OutOfMemoryError: unable to create new native thread
  • GPT 5.6 Sol系统提示词泄露:大语言模型行为机制与提示词工程深度解析
  • Windows 11 24H2与LTSC 2024版本解析与部署指南
  • 3万资金全仓短线交易策略:精准选股与风险控制实战指南
  • 手搓UDS Bootloader|全网独家复现ISO15765 TP网络层、完善单多帧解析分段重组时序管控、助力车载大容量固件无损可靠传输与车规刷写落地
  • Ubuntu 25.10安装与优化全指南
  • 《基于自研主控的工业级eMMC架构解析:如何通过SPOR与pSLC模式解决电力终端掉盘与寿命痛点?》
  • 智能体协作工程:架构设计与实战优化
  • GitHub Copilot Business:企业级AI编码治理平台实战指南
  • VS 2017安装实战指南:工业级遗留系统开发必备IDE
  • MyBatis 操作数据库(⼊⻔)--JDBC 操作
  • AU-60 模组实战,四档拾音距离如何一键切换
  • 开源AI CRM系统:架构解析与智能应用实践
  • 钉钉AI Pro vs 企微AI:一场关于「谁更懂中国企业」的再验证
  • FPGA开发入门:盘古1K按键控制LED实验详解
  • 深入解析blender_mmd_tools:5个核心模块实现MMD模型高效导入
  • 嵌入式DSP实验:AD7606与AD5724数据采集与输出配置详解
  • Cursor实战案例-运维监控-100-全自动镜像清理:利用Shell脚本定时检测并清除Docker无用挂起镜像与策略数据
  • Longan Pi 3H开发板图像采集与AI物体识别实践