time() 返回整秒时间戳,microtime() 提供微秒精度;前者轻量适合通用场景,后者开销大但必要时不可替代,需依业务精度需求选择。

time() 返回整数秒级时间戳,microtime() 提供微秒级精度,本质是精度、性能和用途的取舍。
精度与返回值形式不同
time() 只返回自 1970-01-01 00:00:00 UTC 起的整秒数,比如 1727805966;它是个简单整数,直接可用。
microtime() 默认返回字符串,如 "0.12345600 1727805966"(小数部分是微秒,空格后是秒);加 true 参数才返回浮点数 1727805966.123456,可直接参与计算。
- 需要做减法算耗时(如请求执行时间),必须用
microtime(true)两次调用再相减 - 存数据库记录“订单创建时间”,用 time() 足够;但做 APM 埋点或防重放 nonce,必须用 microtime(true)
- 字符串版 microtime() 不能直接运算,强转 float 还有 locale 和性能隐患
底层开销差距明显
time() 底层只调一次 time(2) 系统调用;microtime()(默认或 true 版)需调用 gettimeofday(2) 或 clock_gettime() 至少一次,还涉及浮点拼接或类型处理。
- 实测百万次调用:time() 约 0.08 秒,microtime() 约 0.23 秒,慢近 3 倍
- microtime(true) 比字符串版快约 15%,因跳过字符串分割和拼接
- 高频场景(如中间件每请求都记日志时间),可缓存秒级 time() 值,避免反复进内核
适用场景不能混用
不是“要更准”就该换函数,而是看业务是否真依赖微秒级区分能力。
- 用户注册时间、文章发布时间、缓存过期判断 → 用 time(),省资源又清晰
- 压测中统计单请求耗时、生成防重放 token、单元测试 mock 连续时间 → 必须用 microtime(true)
- Windows 下 microtime() 开销更大,因依赖 QueryPerformanceCounter + 频繁校准,更需谨慎评估
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











