- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简短的问题——如果答案是(或应该是)显而易见的,我提前道歉……这个问题可能会暴露我非常基本的[即,基本上不存在]的代码流利程度。
但我在 Tampermonkey 中编写了一个 .js 用户脚本,让我可以更精确地控制 Safari 中的视频播放。我已将其设置为在所有域上运行:
// @include http://*
// @include https://*
虽然到目前为止这对我来说确实有效,但我知道脚本在我 80% 的互联网上运行是不必要的,我这样做不涉及与视频元素的任何交互......所以我经历并编译了~1,000 个特定域的详尽列表,在这些域中运行脚本是有意义的,例如:
// @include *://*.facebook.com/*
// @include *://*.vimeo.com/*
// @include *://*.youtube.com/*
但是在将 1,000 行代码实际输入到我的 [以前非常娇小!] 用户脚本中之后,我突然意识到——据我所知——我实际上可以大大增加通过强制它现在运行一长串域以查看它是否匹配来运行此脚本所需的系统资源量……也许只是默认运行它可能会减少资源密集度?
哈,与此同时,我也可以想象到处运行它 = 显然更多的资源浪费……但因为我什至不知道如何去测试它(我当然对这里的基础理论没有足够扎实的了解)--> 我想我会把它留给专家,并在这里向你寻求建议!
谢谢你的帮助!! :-)
最佳答案
部分答案,因为它太大而无法发表评论,而且我现在不想设置和运行一些新实验。 (如果有人发布带有更新的、可验证的数字的答案,我会投赞成票。)
下面是当您拥有 Tampermonkey、Violentmonkey 等并安装了用户脚本时会发生什么的粗略描述:
您访问的每个页面都会根据 @include
检查, @match
, 和 @exclude
每个事件用户脚本的指令。更聪明的引擎会检查 @exclude
如果找到匹配项,则首先停止。
一些引擎比其他引擎更擅长此检查,理想情况下,站点匹配信息将保存在内存中以获得最大速度。
每个 <frame>
您访问的所有页面上的或 iframe 都会根据 @include
检查, @match
, 和 @exclude
每个事件用户脚本的指令,除非该脚本有 @noframes
设置。
如果脚本匹配页面(或框架),则 Tampermonkey(等)必须:
(A) 获取脚本代码和任何数据——通常来自磁盘(慢)。
(B) 然后创建某种级别的沙箱——取决于引擎、浏览器和 @grant
模式。
(C) 将脚本注入(inject)上述沙箱——几乎总是由匿名函数包装——并运行它。
然后,用户脚本将根据其代码使用资源。
一般情况:
@match
比 @include
表现更好(最后一次检查是几年前) .如果要使用 1000 行,请使用 @match
过度包含。
使用 @noframes
除非你有理由不这样做。
第 1 步和第 2 步理想情况下可以全部凭内存完成(需要查看各种引擎当前在做什么),很多 @include
s 可以在注入(inject)一个用户脚本的同时处理。 (有人想尝试收集一些数字吗?)
如果用户脚本或其数据(@require
文件、@resource
文件、GM_setValue
数据)需要从磁盘中获取,那么这是一个相对巨大的时间延迟。 (但仍然比从互联网上获取东西要快。)
最后,维护大量网站、每次编辑用户脚本文件所花费的时间和可能的压力必须与您的脚本的侵入性进行比较强>.
如果是我,脚本只延迟了不到 300 毫秒的页面,我会捂着 Nose 使用:
// @match *://*/*
// @noframes
但是,如果脚本更具侵入性、更慢或更耗费资源,您可以使用混合方法...
保留站点列表以在 GM_setValue
中完全运行数据和/或 @resource
d 文件。
这样您就可以使用菜单命令等方式即时编辑列表;或者通过 Tampermonkey 脚本数据编辑器;甚至通过您为此目的创建的按钮。然而,所有这些都超出了这个问题的范围。
关于greasemonkey - 更多资源密集型 : Tampermonkey script (for video control) running on ALL domains—or just 1K domains each with its own @include entry?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212542/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我们可以说 O(K + (N-K)logK)相当于O(K + N logK)对于 1 < = K <= N ? 最佳答案 简短的回答是它们不等价,这取决于k 的值。如果k等于N,那么第一个复杂度是O(
我有以下解决方案,但我从其他评论者那里听说它是 O(N * K * K),而不是 O(N * K)其中 N 是 K 列表的(最大)长度,K 是列表的数量。例如,给定列表 [1, 2, 3] 和 [4,
我试图理解这些语法结构之间的语义差异。 if ((i% k) == (l % k) == 0) 和 if ((i % k) == 0 && (l % k) == 0) 最佳答案 您的特定表达式((i
我有时会使用一维数组: A = np.array([1, 2, 3, 4]) 或 2D 阵列(使用 scipy.io.wavfile 读取单声道或立体声信号): A = np.array([[1, 2
在文档聚类过程中,作为数据预处理步骤,我首先应用奇异向量分解得到U、S和Vt 然后通过选择适当数量的特征值,我截断了 Vt,这让我从阅读的内容中得到了很好的文档-文档相关性 here .现在我正在对矩
我问的是关于 Top K 算法的问题。我认为 O(n + k log n) 应该更快,因为……例如,如果您尝试插入 k = 300 和 n = 100000000,我们可以看到 O(n + k log
这个问题与另一个问题R:sample()密切相关。 。我想在 R 中找到一种方法来列出 k 个数字的所有排列,总和为 k,其中每个数字都是从 0:k 中选择的。如果k=7,我可以从0,1,...,7中
我目前正在评估基于隐式反馈的推荐系统。我对排名任务的评估指标有点困惑。具体来说,我希望通过精确度和召回率来进行评估。 Precision@k has the advantage of not requ
我在 Python 中工作,需要找到一种算法来生成所有可能的 n 维 k,k,...,k 数组,每个数组都沿轴有一行 1。因此,该函数接受两个数字 - n 和 k,并且应该返回一个数组列表,其中包含沿
我们有 N 对。每对包含两个数字。我们必须找到最大数 K,这样如果我们从给定的 N 对中取 J (1 2,如果我们选择三对 (1,2),我们只有两个不同的数字,即 1 和 2。 从一个开始检查每个可能
鉴于以下问题,我不能完全确定我当前的解决方案: 问题: 给定一个包含 n 元素的最大堆,它存储在数组 A 中,是否可以打印所有最大的 K 元素在 O(K*log(K)) 中? 我的回答: 是的,是的,
我明白了: val vector: RDD[(String, Array[String])] = [("a", {v1,v2,..}),("b", {u1,u2,..})] 想转换成: RDD[(St
我有 X 个正数,索引为 x_i。每个 x_i 需要进入 K 组之一(其中 K 是预先确定的)。令 S_j 为 K_j 中所有 x_i 的总和。我需要分配所有 x_i 以使所有 S_j 的方差最小化。
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在研究寻找原始数的算法,看到下面的语句,我不明白为什么。 while (k*k <= n) 优于 while (k <= Math.sqrt(n)) 是因为函数调用吗?该调用函数使用更多资源。 更
我想找到一种尽可能快的方法来将两个小 bool 矩阵相乘,其中小意味着 8x8、9x9 ... 16x16。这个例程会被大量使用,所以需要非常高效,所以请不要建议直截了当的解决方案应该足够快。 对于
有没有一种惯用的方法来获取 Set和 Function ,并获得 Map实时取景? (即 Map 由 Set 和 Function 组合支持,例如,如果将元素添加到 Set ,则相应的条目也存在于 M
这个问题在这里已经有了答案: Can a local variable's memory be accessed outside its scope? (20 个答案) returning addr
给定一个矩阵:- k = [1 2 3 ; 4 5 6 ; 7 8 NaN]; 如果我想用 0 替换一个数字,比如 2,我可以使用这个:k(k==2) =
我是一名优秀的程序员,十分优秀!