Questions tagged «vectorization»

向量化是指一种编程范例,其中函数可以一次对整个数组进行操作。这在函数调用,内存访问,并行化和代码表达性方面提供了好处。对某些编程语言(例如MATLAB)进行了优化,以使其在矢量化时具有最佳性能。

10
为什么单独循环中的元素加法比组合循环中的要快得多?
假设a1,b1,c1,并d1指向堆内存和我的数字代码具有下列核心循环。 const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } 该循环通过另一个外部for循环执行了10,000次。为了加快速度,我将代码更改为: for (int j = 0; j < n; j++) { a1[j] += b1[j]; } for (int j = 0; j < n; j++) { c1[j] += …


4
是否有R函数来查找向量中元素的索引?
在R中,我有一个element x和一个vector v。我想找到一个v等于的元素的第一个索引x。我知道执行此操作的一种方法是:which(x == v)[[1]],但这似乎效率太低。有更直接的方法吗? 对于奖励积分,如果x是矢量,是否存在可以使用的功能?也就是说,它应返回索引向量,指示xin 中每个元素的位置v。

7
什么是“向量化”?
现在好几次,我在matlab,fortran等中都遇到过这个术语……但我从未找到任何解释,它的意思是什么,它的作用是什么?所以我在这里问,什么是向量化?例如,“循环被向量化”是什么意思?

4
“ * apply”家庭真的没有向量化吗?
因此,我们习惯对每个R的新用户说“ apply不是矢量化的,请查看Patrick Burns R Inferno Circle 4 ”,其中说(我引用): 常见的反射是在apply系列中使用功能。这不是 向量化,而是循环隐藏。apply函数的定义中包含一个for循环。lapply函数掩盖了循环,但是执行时间往往近似等于显式的for循环。 的确,快速查看apply源代码可以发现循环: grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" 到目前为止还可以,但是看看lapply还是vapply实际上可以看到完全不同的图片: lapply ## function (X, FUN, ...) ## { ## FUN <- match.fun(FUN) ## if (!is.vector(X) || is.object(X)) ## …



2
熊猫中的for循环真的不好吗?我什么时候应该在意?
是for循环真正的“坏”?如果不是,在什么情况下它们会比使用更常规的“矢量化”方法更好?1个 我熟悉“矢量化”的概念,以及熊猫如何利用矢量化技术来加快计算速度。向量化功能在整个系列或DataFrame上广播操作,以实现比传统上迭代数据快得多的加速。 但是,我很惊讶地看到很多代码(包括来自Stack Overflow的答案)提供了解决问题的解决方案,这些问题涉及使用for循环和列表推导来遍历数据。文档和API指出循环是“不好的”循环,并且“绝不能”循环访问数组,序列或DataFrame。那么,为什么有时我会看到用户建议基于循环的解决方案? 1-虽然问题听起来似乎有些宽泛,但事实是,在某些非常特殊的情况下,for循环通常比传统上遍历数据更好。这篇文章的目的是为了后代。

8
JVM的JIT编译器是否生成使用矢量化浮点指令的代码?
可以说,我的Java程序的瓶颈实际上是一些紧密的循环,无法计算一堆矢量点积。是的,我已经进行了概要分析,是的,它是瓶颈,是的,它很重要,是的,这就是算法的方式,是的,我已经运行了Proguard来优化字节码,等等。 实质上,这是点产品。float[50]与之类似,我有两个,我需要计算成对乘积之和。我知道处理器指令集可以像SSE或MMX一样快速且批量地执行此类操作。 是的,我可能可以通过在JNI中编写一些本机代码来访问它们。JNI调用结果非常昂贵。 我知道您不能保证JIT将编译或不编译。有没有人曾经听说过使用这些指令的JIT生成的代码?如果是这样,那么有关Java代码的任何内容都可以使它以这种方式编译吗? 可能是“否”;值得一问。

5
Matlab向量化-单元格的非零矩阵行索引
我正在与Matlab合作。 我有一个二进制方阵。对于每一行,都有一个或多个1。我想遍历此矩阵的每一行,并返回这些1的索引,并将其存储在单元格的条目中。 我想知道是否有一种方法可以不循环遍历该矩阵的所有行,因为在Matlab中循环确实很慢。 例如我的矩阵 M = 0 1 0 1 0 1 1 1 1 然后最终,我想要类似 A = [2] [1,3] [1,2,3] A细胞也是如此。 是否有一种无需使用for循环即可实现此目标的方法,目的是更快地计算结果?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.