问题标签 [unroll]

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.

0 投票
3 回答
44818 浏览

c - 告诉 gcc 专门展开一个循环

如何告诉 GCC 展开特定循环?我使用了 CUDA SDK,其中可以使用#pragma unroll. gcc 有类似的功能吗?我用谷歌搜索了一下,但找不到任何东西。

0 投票
6 回答
1389 浏览

c - 高效的手动循环展开

我有这个 C 代码:

出于编译器优化的原因(在 Cell 处理器的 SPE 上),我需要手动解循环,所以我尝试了:

但我不知道如何处理

并且事实上lopp取决于“n_n”上的每次运行,并且我应该手动编写代码多次,因为最大值“n_n”会得到。

你认为它可以如何修复?

0 投票
1 回答
993 浏览

c - gcc 会自动“展开”if 语句吗?

假设我有一个看起来像这样的循环:

其中一些琐碎的任务被卡在只运行几次的 if 语句后面。我一直听说“循环中的 if 语句很慢!” 因此,为了(略微)提高性能,我将循环拆分为:

gcc(带有适当的标志,如-O3)会自动将一个循环分成两个,还是只是展开以减少迭代次数?

0 投票
1 回答
9401 浏览

loops - 如果行程计数不恒定,为什么我的#pragma-unrolled 循环的性能会下降?

我有以下使用循环展开的代码:

在这里,如果 n 是一个已定义的常量,则一切正常。但是,如果 n 是一个变量,则性能会显着降低。我注意到大约 3 次指令被发出和执行。我想我正在寻找一种在运行时进行循环展开的方法,这可能是不可行的。

0 投票
2 回答
7359 浏览

scala - scala splat 可以用于任何不是可变参数的东西吗?

给定例如:

我可以正常调用:

或啪啪啪:

但是我可以使用 splat 为除 varargs 参数之外的任何参数提供参数吗?例如,我想做类似的事情:

那是行不通的,但是有什么方法可以实现从单个对象提供多个参数的相同效果,无论是元组还是其他对象?鉴于元组的长度和类型在编译时都是已知的,是否有任何理由无法为元组实现?

0 投票
2 回答
599 浏览

c - c c++中的符号模拟

我想知道我是否可以看到 C 程序的循环展开形式。例如,我有以下 for 循环

问题是“是否有可能以可读格式查看该程序的循环展开形式”。我有兴趣了解 gcc 编译器如何表达 h99、g99、n99、f99、j99 和 k99(第 99 次循环迭代中的 h、g、n、f、j 和 k 的值)是否可以这样做?或者应该怎么做才能看到从输入 a99、b99、c99、d99 到 a1、b1、c1 和 d1 的 h99、g99、n99、f99、j99 和 k99 的表达式?

简而言之,我想在每次迭代“i”时进行符号模拟,即用输入 ai、bi、ci、di 表示输出 hi、gi、ni、fi、ji 和 ki,直到 a1、b1、c1 和d1。

请让我知道,如果你有任何问题。

0 投票
1 回答
1298 浏览

loops - AMD OpenCL 内核中的展开循环

我正在尝试评估 AMD 的 OpenCL 之间的性能差异。我在内核中有用于 hough 转换的内核我在运行内核时有两个 #pragma unroll 语句不会产生任何加速

#pragma unroll 对 AMD OpenCL 有帮助吗

0 投票
0 回答
520 浏览

opengl - OpenGL“优化”统一变量

我有一个名为control_count的统一变量(贝塞尔曲线中控制点的计数)。在我的代码中的标记部分,如果我用这个变量替换常量4,它就会停止工作,如果它是4,它工作正常。变量中必须有值 4,我也在循环之前和之后对其进行了测试,我也在代码中标记了这一点。这应该是一个展开的问题?如何强制编译器不这样做?

}

使用常数4的“好”结果: 在此处输入图像描述

使用变量control_count的“错误”结果: 在此处输入图像描述

0 投票
1 回答
33 浏览

callback - 如何在 Coffeescript 中展开回调?

通常在Javascript中我可以做这样的事情:

但是 Coffeescript 不允许命名函数被提升,所以我必须在调用它之前定义一个函数。这将导致它们出现故障(非常混乱)。如果它们中的任何一个具有循环依赖关系,那么根本不可能。

在 Coffeescript 我被迫这样做:

如果您有多个步骤,这可能很快就会失控。

是否可以在 Coffeescript 中实现 Javascript 模式?如果没有,处理这种情况的最佳方法是什么?

0 投票
1 回答
274 浏览

javascript - 将列表展开到函数参数中?

给定一个参数列表和一个二元函数:

如何将 args 展开为函数参数?- 例如,在 Python 中,您可以:f(*args).

我尝试过的(我想更多的 JavaScript 风格):