小编Nor*_*löw的帖子

英特尔TBB并行化开销

为什么英特尔线程构建模块(TBB)parallel_for有如此大的开销?根据第3.2.2 自动分块Tutorial.pdf其周围半毫秒.这是教程中的一个重点:

注意:对于parallel_for,循环通常需要至少一百万个时钟周期才能提高其性能.例如,在2 GHz处理器上占用至少500微秒的环路可能会受益于parallel_for.

从我到目前为止所读到的内容,TBB在内部使用了线程池(工作线程池)模式,它通过最初只生成工作线程(这需要数百微秒)来防止这种不良开销.

那么花时间呢?使用互斥锁进行数据同步并不是那么慢吗?此外,TBB不使用无数据结构进行同步吗?

c++ parallel-processing tbb overhead lock-free

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

Clang 3.1 + libc ++编译错误

我已经~/alt在Ubuntu 12.04上使用GCC-4.6成功构建并安装(在前缀下)LLVM-Clang主干(2012年4月23日),并使用此Clang-build成功使用libc ++.当我想使用它时,我必须提供两种-lc++,-libstdc++如下所示

/home/per/alt/bin/clang -x c++ -I/home/per/alt/include/v1 -L/home/per/alt/lib -std=gnu++0x -g -Wall ~/f.cpp -lm -lc++ -lstdc++ -lpthread -o f
Run Code Online (Sandbox Code Playgroud)

编译f.cpp包含

#include <iostream>

using std::cout;
using std::endl;

int main(int argc, const char * argv[]) {
    cout << "sxx" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我省略,-lstdc++我会收到链接错误

/home/per/alt/include/v1/ostream:989: error: undefined reference to '__cxa_begin_catch'
/home/per/alt/include/v1/ostream:993: error: undefined reference to '__cxa_end_catch'
/home/per/alt/include/v1/ostream:993: error: undefined reference to '__cxa_end_catch'
/tmp/f-4l9mgl.o(.eh_frame+0xd3): error: undefined reference to '__gxx_personality_v0'
clang: error: linker command …
Run Code Online (Sandbox Code Playgroud)

c++ redundancy gcc clang c++-standard-library

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

D的Boost.Filesystem-like Library

是否有人编写了类似于Boost.Filesystem的D库,提供了可以进行文件系统目录树遍历的迭代器/范围?

filesystems iterator d tree-traversal

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

D源模块的Hyrbid模块和程序行为

Python源文件具有使用该模式既可以作为模块也可以作为独立程序(工具)的良好属性

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

是否有可能为D模块源文件获得相同的行为?

python executable module d

4
推荐指数
2
解决办法
182
查看次数

试图实现zipWith

我正在尝试实现经典的高阶范围zipWith,如下所示

import std.traits: allSatisfy;
import std.range: isInputRange;

auto zipWith(fun, Ranges...)(Ranges ranges) if (Ranges.length >= 2 && allSatisfy!(isInputRange, Ranges))
{
    import std.range: zip;
    return zip(ranges).map!fun;
}
Run Code Online (Sandbox Code Playgroud)

但是

unittest
{
    auto x = [1, 2, 3, 4, 5];
    zipWith!((a, b) => a + b)(x, x);
}
Run Code Online (Sandbox Code Playgroud)

失败,错误

template algorithm_ex.zipWith cannot deduce function from argument types !((a, b) => a + b)(int[], int[]), candidates are: (d-dmd-unittest)
algorithm_ex.zipWith(fun, Ranges...)(Ranges ranges) if (Ranges.length && allSatisfy!(isInputRange, Ranges))
Run Code Online (Sandbox Code Playgroud)

而且我不明白为什么.有线索吗?

更新:

在Cyber​​Shadows很好的回答后,我现在有了

import std.traits: allSatisfy; …
Run Code Online (Sandbox Code Playgroud)

d range higher-order-functions

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

模式行中的Subversion分支

如果一个文件位于由Subversion repo支持的目录中,该目录以其中任何一个trunkbranches/X如何在模式行中显示trunkX显示为与Git支持的文件中显示的相似SVN-trunkSVN-X类似Git-master.

svn git emacs version-control modeline

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

来自Emacs的外部进程调用期间的临时修改环境

在使用或时,是否有一种方便功能性(类似with-...)的临时修改环境变量的方法?shell-comandstart-process

提前谢谢,Per

emacs shell temporary environment-variables convenience-methods

3
推荐指数
1
解决办法
387
查看次数

获取所有Emacs缓冲区列表

如何获取Emacs中所有缓冲区的列表?然后,我想使用dolist或迭代此列表mapcar.

emacs buffer list

3
推荐指数
1
解决办法
146
查看次数

InputRange连接

是否存在连接两个或更多个的高阶范围模式InputRanges

就像是

foreach (e; a) {
    // do stuff with e
}
foreach (e; b) {
    // do stuff with e
}
...
Run Code Online (Sandbox Code Playgroud)

应改为写成

foreach (e; someMagic(a, b, ...)) {
    // do stuff with e
}
Run Code Online (Sandbox Code Playgroud)

d concatenation range

3
推荐指数
1
解决办法
46
查看次数

D中的自动数据持久性

有没有人想过在D中实现某种自动数据(对象)持久性?我对这个问题的理想解决方案是:

@persistent int x = 1;
Run Code Online (Sandbox Code Playgroud)

这对于静态变量大多数都是无效的,但动态变量也是可能的.

这些变量将存储在键值存储数据库中.键可以是基于范围变量名称和类型的指纹摘要加上当前加载的代码的一些摘要.

reflection persistence d object

3
推荐指数
1
解决办法
142
查看次数