我正在寻找获得π值的最快方法,作为个人挑战.更具体地说,我使用的方法不涉及使用#define
常量M_PI
,或者对数字进行硬编码.
下面的程序测试了我所知道的各种方式.从理论上讲,内联汇编版本是最快的选择,但显然不便于携带.我已将其作为基线与其他版本进行比较.在我的测试中,使用内置4 * atan(1)
函数,在GCC 4.2上版本最快,因为它会自动将其折叠atan(1)
为常量.根据-fno-builtin
指定,atan2(0, -1)
版本最快.
这是主要的测试程序(pitimes.c
):
#include <math.h>
#include <stdio.h>
#include <time.h>
#define ITERS 10000000
#define TESTWITH(x) { \
diff = 0.0; \
time1 = clock(); \
for (i = 0; i < ITERS; ++i) \
diff += (x) - M_PI; \
time2 = clock(); \
printf("%s\t=> %e, time => %f\n", #x, diff, diffclock(time2, time1)); \
}
static inline double
diffclock(clock_t time1, clock_t time0)
{ …
Run Code Online (Sandbox Code Playgroud) 我问的更多关于这对我的代码意味着什么.我在数学上理解这些概念,我只是很难在概念上围绕它们的意思.例如,如果要对数据结构执行O(1)操作,我理解它必须执行的操作量不会增加,因为有更多项.而O(n)操作意味着您将对每个元素执行一组操作.有人可以在这里填空吗?
假设我有一个嵌套在数据帧中的一个或两个级别的向量.是否有快速而肮脏的方式来访问最后一个值,而不使用该length()
功能?PERL的$#
特殊变量是什么?
所以我想要像:
dat$vec1$vec2[$#]
Run Code Online (Sandbox Code Playgroud)
代替
dat$vec1$vec2[length(dat$vec1$vec2)]
Run Code Online (Sandbox Code Playgroud) 如果我们在算法中使用循环而不是递归,反之亦然,那么两者是否可以起到同样的作用?例如:检查给定的字符串是否为回文.我已经看到许多程序员使用递归作为一种手段来展示一个简单的迭代算法可以适应账单.编译器在决定使用什么方面起着至关重要的作用吗?
在神经网络的输出层中,通常使用softmax函数来近似概率分布:
由于指数,计算起来很昂贵.为什么不简单地执行Z变换以使所有输出都是正的,然后通过将所有输出除以所有输出的总和来归一化?
除了节点中的红色和黑色外,AVL和红黑树都是自平衡的.选择红黑树而不是AVL树的主要原因是什么?红黑树有哪些应用?
String#substring()
Java中方法的时间复杂度是多少?
我有三个或更多的自变量表示为R向量,如下所示:
A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
Run Code Online (Sandbox Code Playgroud)
我想采用所有这些产品的笛卡尔积,并将结果放入数据框中,如下所示:
A B C
1 x 0.1
1 x 0.5
1 y 0.1
1 y 0.5
2 x 0.1
2 x 0.5
2 y 0.1
2 y 0.5
3 x 0.1
3 x 0.5
3 y 0.1
3 y 0.5
Run Code Online (Sandbox Code Playgroud)
我可以通过手动写出调用来执行此操作rep
:
d <- data.frame(A = rep(A, times=length(B)*length(C)),
B = rep(B, times=length(A), each=length(C)),
C = rep(C, each=length(A)*length(B))
Run Code Online (Sandbox Code Playgroud)
但是必须有更优雅的方式去做,是吗? product
在itertools
部分工作中,但我找不到任何方法来吸收迭代器的输出并将其放入数据框中.有什么建议?
ps此计算的下一步看起来像
d$D <- f(d$A, d$B, d$C)
Run Code Online (Sandbox Code Playgroud)
所以如果你知道一次做两个步骤的方法,这也会有所帮助.
我需要知道:Java中HashMap.containsKey()的时间复杂度是多少?
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
是一种本地方法.
这种方法的时间复杂度是多少?