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

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

javascript 复制代码
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()
}
相关推荐
学长毕设3 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
努力的小雨5 小时前
给 AI 眼镜开发应用有多难?我从零做了一个陪练,还上架了
后端
excel6 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
AI入职记7 小时前
AI 代码审查召回率实测:20 个骗过单元测试的变异体,抓到 13 个
后端
浮链序7 小时前
别让 AI 客服把用户当猴耍:百来行 Python 把「转人工」做成一条高可用链路
后端
属于自己的天空7 小时前
Claude Code 插件完全指南:官方市场怎么用,怎么自己写(v2.1.269+)
后端
Tokenfree7 小时前
给大模型调用加一个熔断器:60 行代码,三个阈值
后端
Jason_chen7 小时前
Linux 进程调度器深入解析与实时性优化指南(基于 Linux 5.10+)
后端
136096757237 小时前
三个 Agent 干同一个活,职责边界到底该怎么划
后端
房西杭7 小时前
GM 指令:修改玩家属性
后端