问题标签 [cpu-cycles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java控件动画——如何让它们流畅高效
我正在用 Java 编写一些自定义控件,并使用动画进行过渡/淡入淡出/移动。
我这样做的方式是我开始一个新线程并对变量进行调整,并且使用paint()
方法调整事物。
例子:
现在,我的问题是,假设我正在实现淡入。我要做的是增加 alpha 变量byte x //between 0-255
并绘制一个矩形alphaLevel += x
,例如(在伪代码中):
我想知道什么是最低的,什么是最高的,我应该将睡眠设置为,这样动画看起来就不会断断续续?它是否与目标设备刷新率或人眼有关?再次与步骤相同的问题。有没有一个网站可以给我可以复制的好数字。
我问的原因是为了最大限度地提高效率,因为它将在电池供电的设备上运行,因此更多的 CPU 时间 = 更少的电池。你会把它设置成什么?
谢谢。
c - 此代码如何计算经过的 CPU 周期数?
取自这个 SO 线程,这段代码计算了运行代码在行//1
和之间经过的 CPU 周期数//2
。
该功能如何rdtsc()
工作?
cpu-architecture - 计算机组织
你能详细解释一下什么是“时钟周期”吗?
c++ - c++ 实际计算复杂度平方根()
CPU周期(或者,本质上,“速度”)之间的差异是什么?
和
编辑:我知道操作是不等价的,我只是随意提出x /= y
作为基准x = sqrt(y)
c - (n - 乘法) vs (n/2 - 乘法 + 2 加法) 哪个更好?
我有一个 C 程序,它有 n 次乘法(单次乘法和 n 次迭代),我发现另一个逻辑有 n/2 次迭代(1 次乘法 + 2 次加法)。我知道两者都是 O(n) 的复杂性。但就 CPU 周期而言。哪个更快?
emulation - 模拟CPU时关于循环计数准确性的问题
我计划在接下来的几个月里创建一个 Sega Master System 模拟器,作为 Java 的一个业余项目(我知道它不是最好的语言,但我发现它工作起来很舒服,并且作为一个经常使用Windows 和 Linux 我认为跨平台应用程序会很棒)。我的问题是关于周期盘点的;
我查看了另一个 Z80 仿真器和其他仿真器的源代码,特别是执行循环让我很感兴趣——当它被调用时,一个 int 作为参数传递(比如说 1000 作为示例)。现在我知道每个操作码需要不同数量的周期来执行,并且在执行这些操作时,周期数会从整体数字中减少。一旦剩余的循环数 <= 0,执行循环就结束了。
我的问题是,这些仿真器中的许多都没有考虑到要执行的最后一条指令可以将周期数推为负值这一事实——这意味着在执行循环之间,最终可能会出现 1002 个周期执行而不是 1000。这重要吗?一些模拟器通过在下一个执行循环上进行补偿来解决这个问题,而有些则没有——哪种方法最好?请允许我说明我的问题,因为我不是特别擅长自我介绍:
在这个特定的循环示例结束后,numOfCycles 将为 -2。这只会是一个很小的不准确,但它在人们的经验中是否重要?我很感激任何人对此的见解。我计划在每一帧之后中断 CPU,因为这看起来很合适,所以我知道 1000 个周期很低,但这只是一个例子。
非常感谢,菲尔
mips - 在给定周期数和 GHz 的情况下查找程序的执行时间
鉴于以下情况,我必须找到一小段 MIPS 代码的执行时间(以微秒为单位):
这就是我为解决这个问题而获得的所有信息(我已经把总周期数加起来了,假设我应该对不同类型的指令应该采取多少个周期做出假设)。我一直在使用书中的公式试图找到执行时间,但我无法得到一个似乎正确的答案。解决这样的问题的过程是什么?谢谢。
performance - 这些 cpu 操作是否相同?
考虑以下两个 cpu 操作:
总和 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 次
和 = 1 * n
现在我想知道天气这两个操作在复杂性和 cpu 时间方面是不同的。我也可以将这些视为原子操作吗?
performance - 为什么 RDTSC 不是序列化指令?
RDTSC 指令的Intel 手册警告说,当 RDTSC 实际执行时,乱序执行可能会发生变化,因此他们建议在其前面插入一条 CPUID 指令,因为 CPUID 会序列化指令流(CPUID 永远不会乱序执行)。我的问题很简单:如果他们有能力让指令序列化,为什么他们不让 RDTSC 序列化?它的全部目的似乎是获得周期准确的计时。是否存在您不想在其前面使用序列化指令的情况?
较新的 Intel CPU 有一个单独的 RDTSCP 指令正在序列化。英特尔选择引入单独的指令,而不是更改 RDTSC 的行为,这向我表明,在某些情况下,您想要的可能是时序乱序。它是什么?
c - 循环展开及其对流水线和CPE的影响(有解决方案,但不明白)
下面是一个关于练习测试的问题。该表实际上已填写了所有解决方案。但是,我需要澄清为什么这些解决方案是这样的。(阅读水平线下方的问题)。
例如,我真的很想了解 A2 和 A3 的解决方案行。
正如我所看到的,您在 A2 中遇到以下情况:
- x * y
- xy * r
- xyr * z
现在,让我们看看它是如何进行的:
所以我们能够重叠 xyr * z 和 x2 * y2,因为没有依赖冲突。但是,这只是摆脱了 3 个周期,对吗?
所以它仍然是 (12 - 3) / 3 = 9 / 3 = 3 Cycles Per Element(三个元素)。那么他们如何获得 A2 的 8/3 CPE 呢?
任何帮助理解这个概念将不胜感激!不急,因为考试要到下周。如果您需要任何其他信息,请告诉我!
(以下是完整的测试题文本,以及完整填写解决方案的表格)
考虑以下用于计算 n 个整数数组的乘积的函数。
我们将循环展开了 3 倍。
对于标记为 Product 计算的行,我们可以使用括号来创建五个不同的计算关联,如下所示:
我们用每个元素的周期数 (CPE) 来表示函数的性能。如书中所述,此度量假设运行时间(以时钟周期为单位),长度为 n 的数组是 Cn + K 形式的函数,其中 C 是 CPE。
我们在 Intel Pentium III 上测量了该功能的五个版本。回想一下,这台机器上的整数乘法运算有 4 个周期的延迟和 1 个周期的发出时间。
下表显示了 CPE 的一些值,以及缺少的其他值。测量的 CPE 值是实际观察到的值。“理论 CPE”意味着如果唯一的限制因素是整数乘法器的延迟和发布时间,则可以实现的性能。
填写缺少的条目。对于测量的 CPE 的缺失值,您可以使用具有相同计算行为的其他版本的值。对于理论 CPE 的值,您可以仅考虑乘法器的延迟和发布时间来确定迭代所需的周期数,然后除以 3。