也许这是错误的地方,但我不太确定在哪里放.
我有一个非常大的压缩SAS文件,格式为.XPT.我想将其转换为逗号分隔格式.该文件太大,无法在R中加载.我的机器上没有SAS,也没有办法获取它.
有什么建议?某处有转换器吗?我找不到一个使用谷歌.
我想要一个R函数,它可以让我同时做以下两件事:
plot3d是不可接受的,因为它只允许在生成图形后手动调整图形.我希望能够编写这个脚本.
我在一个程序上运行valgrind memcheck,该程序产生了数千个其他线程.
其他线程不会产生错误,我不关心它们会发生什么.
但是,每次新线程产生时,Valgrind都会坚持在/ tmp中打开命名管道.这不仅浪费,它实际上打破了valgrind.有时valgrind不会自行清理,然后具有相同pid的未来子代(稍后激活)无法生成,因为valgrind无法创建具有正确名称的管道(它已经存在).
如何防止Valgrind制作所有这些管道!?!
编辑:我已经尝试过的标志:
--child沉默-后叉=是
以及我已经排除的事情:
--track-children = no(默认值为no).
DI中常常想要做类似的事情:
uint n;
foreach(uint i; parallel(1..n)){
somefunc(i);
}
Run Code Online (Sandbox Code Playgroud)
也就是说,我希望并行调用一个函数(somefunc),使用整数1到n作为参数.
但是,dmd在这里似乎不喜欢1..n,所以我最终做了一些愚蠢的事情:
uint n;
int[] nums = new int[n];
foreach(ulong index, int value; parallel(nums)){
sumfunc(index);
}
Run Code Online (Sandbox Code Playgroud)
在D中写这个有惯用的方法吗?什么东西不涉及创造不必要的额外变量?
在D中,假设我有一个类似的函数:
private static double vecMult(immutable Vector v1, immutable Vector v2) pure {
double sum = 0.0;
foreach(ulong k; v1.keys)
sum += v1[k] * v2[k];
return sum;
}
Run Code Online (Sandbox Code Playgroud)
现在,假设,为了调试或测试目的,我想插入类似的东西:
private static double vecMult(immutable Vector v1, immutable Vector v2) pure {
double sum = 0.0;
foreach(ulong k; v1.keys)
if(!(k in v2)){
writeln(k);
exit(1);
}
sum += v1[k] * v2[k];
return sum;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果出现错误情况,我会知道是什么导致了它(我总是可以将它放在一个调试块中).
现在,由于writeln不纯粹,vecMult也不再纯粹.如果vecMult是由其他纯函数调用的低级函数,它调用其他纯函数,那么从vecMult中删除"纯"关键字是非常重要的.
有没有一种很好的方法可以从纯函数中获取调试输出而不会使它变为非纯函数?
我有几个项目分布在不同的存储库中.有时我会忘记每个项目存储在哪个存储库中.是否有svn的命令行参数,显示当前目录中工作副本的源存储库?
这个问题询问是否可以以不影响延迟但使用更少 CPU 时间的方式改进自旋锁。大量答案表明了 C++11、Boost 等高级语言概念。
我的第一个想法是使用一个简单的 C 信号量,因为只有当缓冲区为空或已满时,海报才需要阻塞。
然而,在写答案的过程中,我意识到我不知道这些函数在实践中的开销是多少。直觉上,它似乎应该很小,而且对我来说从来都不是优化问题,但与自旋锁相比,它可能是很大的。据推测它也依赖于系统。
这个问题的答案表明,当锁定少于一个线程量子时,自旋锁是首选,但没有给出实际原因说明原因。
这个问题的答案提供了 C++ 中信号量实现的工作示例,该示例在主体中使用带有 pthread_wait 的自旋锁,但它并非取自任何实际的语言实现。
在这里,一些人认为有关互斥锁和信号量之间的速度差异的问题是微不足道的。其他人说信号量速度较慢。
此问题链接的一篇文章表明,在 2.4GhZ 机器上,互斥锁的 C# 锁定命令实际上需要 50 纳秒(因此大约 100 个周期)。然而,尚不清楚 C# 的实现是否代表 POSIX 信号量的直接 C 实现。
所以,问题是,在实践中信号量使用的开销是多少,并且通过扩展,如果我关心的是延迟(即由于某种原因而不是可维护性),我什么时候应该更喜欢自旋锁?
不幸的是,我似乎无法在最小的工作示例中重现此行为,因此这可能过于模糊.但是,我至少可以说明不会导致这种行为的原因.
我有一个D模块,包含几个带有单元测试的类,其结构类似于:
import std.stdio;
class c1{
int c1func(int blah){ return blah; }
unittest{
writeln("Testing c1 func.");
stdout.flush();
}
}
class c2(T:c3) : c1{
private static int c2func(int blah){ return blah; }
unittest{
writeln("Testing c2 func.");
stdout.flush();
}
int c2fun2(int blah){
T tmp = new T();
return tmp.c3fun(blah);
}
}
class c3{
abstract int c3fun(int blah);
}
class c4 : c3{
override int c3fun(int blah){ return blah; }
}
unittest{
writeln("Testing class c1.");
stdout.flush();
c1 myc2 = new c2!(c4)(); …Run Code Online (Sandbox Code Playgroud) 我相信我能够在早期版本的语言中做到这一点,事实上,几个月前编写的代码,编译得很好,然后现在不编译.例:
immutable(X)[int] myhash;
myhash[5] = some_immutable_X; //previously fine.
myhash[5] = some_other_immutable_X; //previously fine also.
Run Code Online (Sandbox Code Playgroud)
然而,现在,dmd抱怨
Error: cannot modify immutable expression myhash[5]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些其他可能的语法而没有成功(例如(immutable X)[int]).似乎不再有办法声明哈希本身是可变的,但内容不是?这似乎是一个相当常见的用例:用于存储对不应该改变的事物的引用的数据结构.有人对此有所了解吗?
我想编写一个通用脚本来查找与最终列相关的一组功能的信息增益.例如,在一个由26列矩阵构建的数据框中,我写道:
information.gain(V26~.,table)
Run Code Online (Sandbox Code Playgroud)
问题是公式V26~.没有明显的通用形式.我的第一个想法是试试这个:
> nms <- colnames(table)
> nms[length(nms)]
[1] "V26"
> information.gain(nms[length(nms)]~., table)
Error in model.frame.default(formula, data, na.action = NULL) :
variable lengths differ (found for 'V1')
Run Code Online (Sandbox Code Playgroud)
由于nms是一个字符串向量,这似乎是错误的.有没有办法将名称强制转化为可以成为公式一部分的东西?
d ×4
r ×3
c++ ×1
csv ×1
dmd ×1
immutability ×1
memcheck ×1
performance ×1
plot ×1
real-time ×1
sas ×1
semaphore ×1
svn ×1
unit-testing ×1
valgrind ×1