Greasy Fork

Greasy Fork is available in English.

YouTube CPU-Tamer Upgrade (Firefox Optimized)

Optimize CPU and GPU usage while watching YouTube videos on Firefox

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
士太夫
日安装量
1
总安装量
3
评分
0 0 0
版本
0.4.2
创建于
2025-12-22
更新于
2025-12-22
大小
9.0 KB
许可证
MIT
适用于

脚本说明

本脚本用于在 Firefox 上观看 YouTube 时,降低页面脚本与计时器在“正在播放”状态下的高频唤醒,减少不必要的 CPU 抢占与主线程压力,从而改善卡顿、掉帧、风扇噪音与功耗表现。
脚本核心思路:在检测到视频处于持续播放且 timeupdate 在近 800ms 内持续更新时,对短间隔的 setTimeout / setInterval 回调进行“合并/节流”,把密集触发的回调推迟到更合适的时机执行。

适用范围

浏览器:Firefox(优先优化目标)

网站:YouTube 主站、YouTube Music、youtube-nocookie 的 embed 页面

适用场景:长时间播放、1080p60/4K、弹幕/评论区脚本较重、开多个标签页时更明显

不适用/无明显收益的情况

本机硬件解码/渲染本身已经非常轻(CPU 本来就很低)

主要瓶颈在网络缓冲或 GPU 驱动层

你只看短视频、很少在一个页面停留

安装与使用

安装 Tampermonkey(或 Violentmonkey)。

新建脚本,把代码粘贴进去保存。

打开 YouTube 播放任意视频即可生效,无需额外设置。

若你想做对比测试:同一视频、同一分辨率/帧率、同一窗口大小,分别启用/禁用脚本观察 CPU、掉帧与风扇噪音差异。

工作机制(更详细)

通过监听 timeupdate 来判断“视频正在连续播放”。

在播放活跃期(最近 800ms 内持续更新时间戳),对高频短周期计时器做“聚合”:

同一个 timer id 在短窗口内的重复触发,会被合并到下一次合适的调度点执行。

目的不是让计时器永远不执行,而是减少“非常密集的唤醒次数”。

通过一个“干净上下文”的 iframe 取到原生计时器函数引用,避免页面脚本对定时器函数的干扰,提高稳定性。执行完会清理 DOM,避免残留。

兼容性说明

如果浏览器不支持 WebGL/GPU 加速(极少见),脚本会直接不启用。

某些情况下(例如 YouTube 内部改动或特殊页面)可能会退化为“不生效但不报错”。

已做的 Firefox 侧优化/修复点

避免任务集合(Set)在边界条件下滞留导致长期增长。

恢复与原算法一致的双 pending 选择逻辑,避免行为偏差。

回绕策略与原逻辑一致,减少边界差异。

lastTimeUpdate 统一使用当前脚本上下文的 win,避免 iframe/顶层差异导致判断异常。

初始化过程改为 requestAnimationFrame 轮询,并在成功/失败后清理注入的容器节点,减少额外定时器唤醒与 DOM 残留。

常见问题与排错
1) 感觉“没生效”

确认脚本匹配到域名:youtube.com / music.youtube.com / youtube-nocookie.com

确认脚本在 Tampermonkey 中已启用,并刷新页面(不要只切换视频)。

用 Firefox 任务管理器或 about:performance 观察差异(同条件 A/B)。

2) 出现奇怪的页面行为/按钮延迟

此脚本会影响短周期计时器回调的触发频率。极少数页面逻辑可能对极短周期 timer 依赖较强。
排查方法:临时禁用脚本刷新页面,如问题消失,可反馈具体页面与复现步骤。

3) 想确认脚本是否在跑

在控制台输入:
window.YTB_CPUTamer_AstralRift
返回 true 代表脚本已注入并运行。

免责声明

本脚本不保证对所有硬件/所有版本 Firefox 都有显著收益。

YouTube 页面结构与内部实现可能随时变更,导致效果变化。

使用本脚本产生的任何后果需自行承担。