小编Sve*_*ger的帖子

为什么这个C++程序如此快速?

我写了一个小基准来比较Python,Ruby,JavaScript和C++的不同解释器/编译器的性能.正如预期的那样,事实证明(优化的)C++胜过脚本语言,但它所做的因素非常高.

结果是:

sven@jet:~/tmp/js$ time node bla.js              # * JavaScript with node *
0

real    0m1.222s
user    0m1.190s
sys 0m0.015s
sven@jet:~/tmp/js$ time ruby foo.rb              # * Ruby *
0

real    0m52.428s
user    0m52.395s
sys 0m0.028s
sven@jet:~/tmp/js$ time python blub.py           # * Python with CPython *
0

real    1m16.480s
user    1m16.371s
sys 0m0.080s

sven@jet:~/tmp/js$ time pypy blub.py             # * Python with PyPy *
0

real    0m4.707s
user    0m4.579s
sys 0m0.028s

sven@jet:~/tmp/js$ time ./cpp_non_optimized 1000 1000000 # * C++ with -O0 (gcc) * …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction performance assembly

76
推荐指数
3
解决办法
8682
查看次数

设置与冻结集的性能

我正在修补Python setfrozenset集合类型.

最初,我认为这frozenset将提供更好的查找性能set,因为它是不可变的,因此可以利用存储项的结构.

但是,对于以下实验,情况似乎并非如此:

import random
import time
import sys

def main(n):
    numbers = []
    for _ in xrange(n):
        numbers.append(random.randint(0, sys.maxint))
    set_ = set(numbers)
    frozenset_ = frozenset(set_)

    start = time.time()
    for number in numbers:
        number in set_
    set_duration = time.time() - start

    start = time.time()
    for number in numbers:
        number in frozenset_
    frozenset_duration = time.time() - start

    print "set      : %.3f" % set_duration
    print "frozenset: %.3f" % frozenset_duration


if __name__ == "__main__":
    n …
Run Code Online (Sandbox Code Playgroud)

python performance set frozenset

27
推荐指数
2
解决办法
1万
查看次数

R语言的作业

我想知道如何在R语言中进行赋值.

考虑以下R shell会话:

> x <- c(5, 6, 7)
> x[1] <- 10
> x
[1] 10 6 7
>
Run Code Online (Sandbox Code Playgroud)

我完全理解.创建向量(5,6,7)并将其绑定到符号"x".之后,'x'会反弹到新的向量(10,6,7),因为向量是不可变的数据结构.

但这里发生了什么:

> c(4, 5, 6)[1] <- 10
Error in c(4, 5, 6)[1] <- 10 :
  target of assignment expands to non-language object
>
Run Code Online (Sandbox Code Playgroud)

或者在这里:

> f <- function() c(4, 5, 6)
> f()[1] <- 10
Error in f()[1] <- 10 : invalid (NULL) left side of assignment
>
Run Code Online (Sandbox Code Playgroud)

在我看来,只能为命名数据结构(如'x')赋值.

我问的原因是因为我试图实现R语言核心,我不确定如何处理这样的任务.

提前致谢

r variable-assignment

14
推荐指数
3
解决办法
6673
查看次数

R对象标识

有没有办法测试R语言中两个对象是否相同?

为清楚起见:identical函数意义上,我的意思并不相同,它根据某些属性(如数值或逻辑值等)比较对象.

我对对象标识非常感兴趣,例如可以使用isPython语言中的运算符进行测试.

identity r object

14
推荐指数
1
解决办法
2630
查看次数

Gnuplot在直方图中改变条形的颜色

是否可以动态更改Gnuplot脚本中的条形颜色?我有以下脚本

reset
fontsize = 12
set term postscript enhanced eps fontsize
set output "bargraph_speedup.eps"
set style fill solid 1.00 border 0
set style histogram
set style data histogram
set xtics rotate by -45
set grid ytics linestyle 1
set xlabel "Benchmarks" font "bold"
set ylabel "Relative execution time vs. reference implementation" font "bold"
set datafile separator ","
plot 'bm_speedup.dat' using 2:xtic(1) ti "Speedup" linecolor rgb "#00FF00"
Run Code Online (Sandbox Code Playgroud)

这会产生这个情节:

生成的情节

是否可以使零度以下的条形颜色变为红色?

谢谢,
斯文

gnuplot histogram

14
推荐指数
1
解决办法
4万
查看次数

在运行时更改R函数的默认参数

是否可以在运行时更改R函数中形式参数的默认值?

我们假设,我们有这个功能

f <- function(x=1) { 
    ...
}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式将x的默认值从1更改为2,例如2吗?


谢谢你,
斯文

reflection r

8
推荐指数
1
解决办法
1924
查看次数

Gnuplot条形图直方图与错误栏

我想得到基准测试的结果.我将两个虚拟机相互比较,并具有以下形式的数据:

BENCHMARK VM1_TIME VM1_ERROR VM2_TIME VM2_ERROR

我想从这些数据生成一个条形图,它应该如下所示:

Gnuplot草图

有人可以提供代码如何做到这一点?我知道这种要求是不受欢迎的,但我真的需要这个并用谷歌搜索2小时,没有令人满意的结果.


谢谢你,
斯文

gnuplot bar-chart

8
推荐指数
2
解决办法
2万
查看次数

R:环境查找

我对R的查找机制感到有点困惑.当我有以下代码

# create chain of empty environments
e1 <- new.env()
e2 <- new.env(parent=e1)
e3 <- new.env(parent=e2)

# set key/value pairs
e1[["x"]] <- 1
e2[["x"]] <- 2
Run Code Online (Sandbox Code Playgroud)

如果我在环境e3中寻找"x",那么我希望得到"2".如果我这样做的话

> get(x="x", envir=e3)
[1] 2
Run Code Online (Sandbox Code Playgroud)

但如果我使用,请不要

> e3[["x"]]
NULL
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这个区别吗?看起来

e3[["x"]]
Run Code Online (Sandbox Code Playgroud)

不仅仅是语法糖

get(x="x", envir=e3)
Run Code Online (Sandbox Code Playgroud)


谢谢你,
斯文

r

6
推荐指数
1
解决办法
692
查看次数

计算__m256i字中的前导零

我正在修改AVX-2指令,我正在寻找一种快速计算__m256i单词中前导零数(具有256位)的方法.

到目前为止,我已经找到了以下方法:

// Computes the number of leading zero bits.
// Here, avx_word is of type _m256i.

if (!_mm256_testz_si256(avx_word, avx_word)) {
  uint64_t word = _mm256_extract_epi64(avx_word, 0);
  if (word > 0)
    return (__builtin_clzll(word));

  word = _mm256_extract_epi64(avx_word, 1);
  if (word > 0)
    return (__builtin_clzll(word) + 64);

  word = _mm256_extract_epi64(avx_word, 2);
  if (word > 0)
    return (__builtin_clzll(word) + 128);

  word = _mm256_extract_epi64(avx_word, 3);
  return (__builtin_clzll(word) + 192);
} else
  return 256; // word is entirely zero
Run Code Online (Sandbox Code Playgroud)

但是,我发现在256位寄存器中找出确切的非零字是相当笨拙的.

有人知道是否有更优雅(或更快)的方法吗?

正如附加信息:我实际上想要计算由逻辑AND创建的任意长向量的第一个设置位的索引,并且我将标准64位操作的性能与SSE和AVX-2代码进行比较.这是我的整个测试代码:

#include <stdio.h> …
Run Code Online (Sandbox Code Playgroud)

c x86 simd intrinsics avx

6
推荐指数
1
解决办法
871
查看次数

在 Debian 9 上编译内核模块

我正在尝试在 Debian 9 下构建内核模块。我使用以下命令安装了必要的软件包

sudo apt-get install build-essential linux-headers-4.9.0-5-amd64
Run Code Online (Sandbox Code Playgroud)

但当我尝试编译我的模块时收到以下错误消息:

> make
make -C /lib/modules/4.9.0-5-amd64/build M=/home/sven/tmp/kernel modules
make[1]: Entering directory '/lib/modules/4.9.0-5-amd64/build'
make[1]: *** No rule to make target 'modules'.  Stop.
make[1]: Leaving directory '/lib/modules/4.9.0-5-amd64/build'
Makefile:6: recipe for target 'all' failed
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

问题好像是没有Makefile

/lib/modules/4.9.0-5-amd64/build
Run Code Online (Sandbox Code Playgroud)

目录。事实上,这个目录是空的......这可能是初学者的问题,但有人知道如何解决这个问题吗?下面列出了内核模块的源代码以及相应的 Makefile。

非常感谢您的帮助!

模块的 C 代码:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Homer S.");
MODULE_DESCRIPTION("hmmmm ...");
MODULE_VERSION("1.0")


static int __init
start(void) {
  printk(KERN_INFO "\nCHELLAS!\n\n");
  return 0;
}


static void __exit
end(void) { …
Run Code Online (Sandbox Code Playgroud)

debian kernel module makefile

5
推荐指数
1
解决办法
4459
查看次数