CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

Lua+CPU时间与墙钟时间:两种计时的分界本质

2026-09-29 16:46 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【语法算法】

CPU 时间和墙钟时间的分界就这两行:

lua
local cpuStart = os.clock()
local wallStart = os.time()

os.clock 返回 CPU 时间——程序实际占用处理器的秒数——os.time 返回墙钟时间——从某个固定时间点到现在的秒数。两者单位相同但语义完全不同。今天拆开。

一、CPU、墙钟、分界三段

两种时间的三段。CPU 时间:程序实际消耗的处理器时间——不包括等待 IO、等待网络、sleep 的时间——CPU 时间在 sleep 时不走。墙钟时间:从某个固定时间点到现在的实际秒数——包括等待、睡眠、一切——墙钟时间就是"你看墙上的钟走了多少秒"。分界:CPU 时间衡量的是"程序多忙",墙钟时间衡量的是"过了多久"——两者的差值就是"程序在等待"的时间。三段连起来:两种时间的分界线就是"是否包含等待"——CPU 时间不含等待,墙钟时间含所有——性能分析看 CPU,业务逻辑看墙钟。

mermaid
graph TD
    A["os.clock() → CPU时间"] --> B["程序忙 → 时间走"]
    A --> C["sleep/IO → 时间停"]
    D["os.time() → 墙钟时间"] --> E["不管忙闲 → 时间走"]
    B --> F["CPU时间 < 墙钟时间"]
    E --> F

二、两种时间的正确写法

lua
-- CPU时间: 计算函数执行耗时
local cpuStart = os.clock()
heavyComputation()
local cpuEnd = os.clock()
print("CPU耗时:", cpuEnd - cpuStart)

-- 墙钟时间: 计算业务间隔
local wallStart = os.time()
SL:ScheduleNextDay(function()
    local wallEnd = os.time()
    print("实际间隔:", wallEnd - wallStart, "秒")
end)

os.clock 的精度是 CPU 时间的核心优势——精度通常达到微秒级——适合精确测量函数耗时——os.time 的精度是秒级——适合业务逻辑的时间间隔计算。

三、CPU 的分界与墙钟的坑

CPU 时间和墙钟时间的分界线就是"是否包含等待"——纯计算用 CPU 时间,含 IO 或等待用墙钟时间——两者的选择就是性能分析的第一步。墙钟时间的坑也在时区:os.time 返回的是 UTC 时间戳——os.date 默认输出本地时间——os.clock 返回的是进程启动以来的 CPU 秒数——三个函数三种参照系——混用参照系是时间 bug 的万恶之源。最后一条纪律:os.clock 的返回值不是 Unix 时间戳——它是"程序启动以来消耗的 CPU 秒数"——起始点不确定,跨进程比较没有意义——os.clock 只适合测量程序内部的相对耗时。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

斩残血纹:它血越少,你刀越重

【游戏功能】 数值组出过一次结算事故:斩残纹上线首日,满血的怪挨了最重的刀——按设计它该是最轻的那一刀。排查下来是加成算错了…

2026-10-01 20:55 996 技术组
进阶实战游戏功能

逆纹缓刀:重刀化三拍,分批慢慢疼

【游戏功能】 defQ=Math.min(30,defQ+6) ——先拆这一行。逆纹把重刀分期,每一拍记一笔挂账,但挂账不能…

2026-10-01 20:55 996 技术组
进阶实战游戏功能

双生跳纹:纹不随尸灭,跳去下一只

【游戏功能】 上一版留了个只在你自己的房间里能复现的怪事:双生纹在怪倒下的那一帧偶尔整个消失——不跳、不报错、日志干净。翻了…

2026-10-01 20:55 996 技术组
进阶实战游戏功能

嫁祸奇纹:它这一爪,落在同伴头上

【游戏功能】 先抛一个坑:两只怪为什么只打你?它们的同伴就站在旁边,刀却一爪一爪全落你身上——仇恨锁死在玩家身上,怪和怪之间…

2026-10-01 20:55 996 技术组
进阶实战游戏功能

醉纹赌刀:一刀一掷,三十点看天

【游戏功能】 前阵子出过一场投诉事故:一个玩家连着七刀全是最小值,气得在世界频道喊"这纹出老千"。运营翻了账,七刀的点数真真…

2026-10-01 20:55 996 技术组
进阶实战游戏功能

反噬血纹:刀重六成,血在一滴滴还

【游戏功能】 P.hp=Math.max(5,P.hp-3) ——先拆这一行。反噬纹每秒要从血条里抽三点,但抽到见底会把人抽…

2026-10-01 20:55 996 技术组