小编nom*_*mad的帖子

Emacs中的Scala REPL

我喜欢在Emacs中进行Scala开发,并且不时地使用REPL来测试代码片段或者加载和测试我刚刚编写的一些代码.我正在使用Scala 2.9.1,我注意到当我在终端缓冲区中打开REPL时,事情基本上已被破坏.特别是,我无法从当前行中删除任何字符,并且无法在当前行上向后移动光标.这是非常令人沮丧的,因为任何时候我输入错误的东西,我必须重新开始命令.我想知道是否有其他人在使用Emacs下的Scala REPL时遇到此问题,并且如果有人有潜在的解决方案.

emacs scala read-eval-print-loop

14
推荐指数
2
解决办法
5362
查看次数

Java/Scala中类似Scipy的功能?

我正在尝试将一些Python代码移植到Scala.它大量使用Numpy和Scipy.虽然我发现了许多密集矩阵/线性代数库,它们可以作为NumPy的一个适当的(但不是极好的)替代品,但我还没有找到任何提供我在SciPy中使用的功能的东西.特别是,我正在寻找支持稀疏部分特征分解的库(比如SciPy包装的arpack),然后是SciPy提供的一些简单事物的库(例如直方图).

java scala numpy linear-algebra scipy

11
推荐指数
1
解决办法
7143
查看次数

具有子命令支持的Scala命令行解析器

我正在寻找Scala的命令行解析器,支持子命令(类似于Python中的argparse).看起来Scala(Scopt,Argot等)有许多不同的命令行解析器,但它们似乎都不支持子命令解析.我只是错过了这些其他库支持子命令的事实,如果没有,是否存在任何此类库?

parsing scala command-line-arguments picocli

11
推荐指数
0
解决办法
1774
查看次数

Scala中的嵌套默认映射

我正在尝试在Scala中构建嵌套映射,其中外部和内部映射都使用"withDefaultValue"方法.例如,以下内容:

val m = HashMap.empty[Int, collection.mutable.Map[Int,Int]].withDefaultValue( HashMap.empty[Int,Int].withDefaultValue(3))
m(1)(2)
res: Int = 3
m(1)(2) = 5
m(1)(2) 
res: Int = 5
m(2)(3) = 6
m
res : scala.collection.mutable.Map[Int,scala.collection.mutable.Map[Int,Int]] = Map()
Run Code Online (Sandbox Code Playgroud)

因此,当用适当的键解决时,地图会让我回到原来的位置.然而,地图本身看起来是空的!在这个例子中,甚至m.size返回0.谁能解释一下这里发生了什么?

default scala map

11
推荐指数
1
解决办法
2614
查看次数

无意识上下文切换的原因

我正在尝试描述一个多线程程序,我在一台大型机器(32核,256GB RAM)上编写.我注意到在运行之间,程序的性能可能会有很大差异(70-80%).我似乎无法找到程序性能中这种巨大差异的原因,但通过分析大量运行中"时间"效用的结果,我注意到非自愿上下文切换的数量与程序性能(显然,较少的上下文切换导致更好的性能,反之亦然).

有没有什么好方法可以确定导致此上下文切换的原因?如果我能发现罪魁祸首,那么也许我可以尝试解决问题.但是,我对可以使用的工具有一些特殊的限制.首先,我没有机器上的root权限,因此任何需要此类权限的工具都没有.其次,它是一个相当老的内核(RHEL5,内核2.6.18),因此可能不存在一些标准的perf事件.无论如何,任何关于如何更深入地了解这种情境转换的原因的建议将不胜感激.

更新:我决定在另一台(和更小的)机器上测试我的程序.另一台机器是一个带有8Gb RAM的4核(带有高速)linux盒子,另一台机器上有一个更新的内核--- 3.2.0和2.6.18.在新机器上,我无法重现双模式性能配置文件.这让我相信这个问题要么是因为硬件问题(如评论中所建议的),要么是内核级别的特定病态情况,这个问题已经得到修复.我目前最好的假设是,它可能是因为新机器具有完全公平调度程序(CFS)的内核而旧机器没有.有没有办法测试这个假设(告诉新机器使用不同的/旧的调度程序)而不必重新编译新机器的古老内核版本?

c++ performance multithreading profiling context-switch

11
推荐指数
2
解决办法
3084
查看次数

勘误表在关于后缀数组的原始论文中?

我正在看原始论文图3中给出的伪代码,它引入了后缀数组"SUFFIX ARRAYS:一种新的在线字符串搜索方法".

我无法弄清楚第4行和第5行的逻辑(从0开始索引).这些内容如下:

否则,如果 ř<P瓦特 - [R ≤一个 POS [N-1] + R 然后
大号 W¯¯ ←Ñ

W是一个长度为"P"的,我们正在寻找和模式rlcp(A[pos[N-1]:], W).问题是,在几乎所有情况下,这lcp将小于'W'的长度.这个条件是为了处理这种情况(我认为),该模式在字典上大于数组中按字典顺序排列的最大后缀,但它根本不测试这个.另一方面,第2和第3行测试是否W小于词典上最小的后缀似乎很有意义

如果升= P瓦特 ≤一个 POS [0] + 1 然后
大号 W¯¯ ←0

我相信原始的行应该是这样的:

否则如果 r <P w r > a Pos [N-1] + r
L W ←N.

唯一W可以大于A[pos[N-1]:]它的方式是它是否lcp比模式的长度短(否则,所有W匹配W都不能更大,只有更小或等于我们共享的东西lcp)和如果之后的字符lcp是更大的W比 …

algorithm pseudocode suffix-array

11
推荐指数
1
解决办法
218
查看次数

Python中的最大权重/最小成本Bipartite匹配代码

我在二分图中搜索最大权重/最小成本匹配的Python代码.我一直在使用NetworkX中的一般情况最大权重匹配代码,但我发现它对我的需求来说太慢了.这可能是由于通用算法速度较慢以及NetworkX解决方案完全用Python实现的事实.理想情况下,我想为包含一些C/C++代码的二分匹配问题找到一些Python代码,但是现在,任何比NetworkX实现更快的东西都会有所帮助.

c++ python algorithm graph

10
推荐指数
2
解决办法
8129
查看次数

JVM任意精度库

我正在研究一个项目(在Scala中),我需要操作一些非常大的数字; 太大而不能用积分类型来表示.Java提供了BigInteger和BigDecimal类(scala提供了一个很好的瘦包装器).但是,我注意到这些库比我过去使用的其他任意精度库(即http://www.ginac.de/CLN/)慢得多,并且速度差异似乎大于可归因的值仅靠语言.

我对我的程序进行了一些分析,并且44%的执行时间用于BigInteger乘法方法.我想加快我的程序,所以我正在寻找比BigInteger类(及其Scala包装器)更快更有效的选项.我看过LargeInteger(来自JScience)和Aint(来自Afloat).但是,两者似乎都比标准的BigInteger类执行得慢.

有没有人知道Java(或在JVM上可用)任意精度数学库,重点是高性能整数乘法和加法?

java scala numeric biginteger arbitrary-precision

10
推荐指数
1
解决办法
2544
查看次数

是否有一个库在C++中提供(定向)超图实现?

我目前正在开发一个项目,该项目使用有向超图框架枚举动态程序的k-best解决方案.我当前的实现(在Python中)运行良好,但速度相当慢.该算法执行许多紧密循环和相当多的递归.我真的认为我可以使用C++实现实现显着的速度提升.然而,经过一段时间的搜索,我无法找到任何在C++中提供超图实现的库(特别是有向超图 - 但我甚至无法找到无向超图的库).有谁知道这样的图书馆?几年前似乎有一个GSoC提议将超图支持提升,但它看起来并没有真正成功.

c++ graph directed-graph

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

将问题与OS X 10.10联系起来

我正在尝试使用最新的Xcode cmd行工具在OSX 10.10中编译一些代码.编译工作,但链接是一个噩梦.首先,我得到一个符号被多次定义的错误.此错误是正确的,但定义是相同的,并且在我无法控制的第三方库中.我无法弄清楚如何强制链接器忽略此问题.一个重要的注意事项是,相同的代码在我的Ubuntu盒子上,在clang和gcc下完美地编译,链接和运行.此链接器问题仅在OS X下.库是静态的.

我遇到的第二个问题甚至更奇怪.如果我删除一些(必要的)功能只是为了我可以编译和链接程序,我运行它时得到以下有趣的消息:"dyld:未找到符号:__ ZNSt12future_errorD1Ev".到底是怎么回事,我该怎么办呢?谷歌在这方面没有任何帮助.

c++ operating-system clang linker-errors xcode5

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

使用清单实例化视图有界类型

我正在尝试使用Scala的清单来实例化一个类型,并且当在具有视图绑定的类型上对该类型进行参数化时,我遇到了问题.我已将问题归结为以下代码:

class foo[X <% Ordered[X]]() {}

def boo[T](implicit m : Manifest[T]) = { m.erasure.newInstance().asInstanceOf[T] }

boo[foo[String]]

java.lang.InstantiationException: foo
    at java.lang.Class.newInstance0(Class.java:357)
    at java.lang.Class.newInstance(Class.java:325)
    . . .
Run Code Online (Sandbox Code Playgroud)

所以你可以看到我们有一个简单的类foo,它在X上参数化; 这是由Ordered [X]限定的视图.boo函数只是尝试使用清单来实例化foo [String]的新实例.然而,当调用这个函数时,事情会非常糟糕,我得到的堆栈跟踪就像我展示的那样开始.当foo的类型参数不是视图有界时,实例化工作没有问题.我假设这与视图绑定只是存在X => Ordered [X]的隐式转换的语法糖这一事实有关,并且某种方式依赖于另一个清单的清单导致了问题.但是,我不知道发生了什么,或者更重要的是,如何解决它.这在Scala中是否可能,如果不是,人们如何实现类似的东西呢?

reflection scala manifest type-erasure view-bound

3
推荐指数
2
解决办法
184
查看次数

C++中"富类型"结构的开销

我想在编译时跟踪当前采用相同类型参数的一些函数的"类型"信息.这是一个例子; 说我有两个功能getThingIndex(uint64_t t)getThingAtIndex(uint64_t tidx).第一个函数将参数视为一个编码,对thing索引进行非平凡的计算,然后返回它.然后可以通过调用获得实际的"事物" getThingAtIndex.getThingAtIndex另一方面,假设您正在查询结构并且已经有索引.这两种方法的后者速度更快,而且更重要的是,我想避免可能造成的传递头痛thinggetThingAtIndex或通过传递indexgetThingIndex.

我正在考虑创建类型thing和事物索引类似如下:

struct Thing { uint64_t thing; }
struct ThingIndex { uint64_t idx; }
Run Code Online (Sandbox Code Playgroud)

然后改变上面函数的签名

getThingIndex(Thing t)
getThingAtIndex(ThingIndex idx)
Run Code Online (Sandbox Code Playgroud)

现在,尽管事实上ThingThingIndex编码了相同的底层类型,但它们在编译时仍然是不同的,并且我通过将索引传递给getThingIndex某个东西来制造愚蠢错误的机会较少 getThingAtIndex.

但是,我担心这种方法的开销.这些函数被称为很多次(10s-100s,数百万次),我很好奇编译器是否会优化这些结构的创建,这些结构基本上只对编译时类型信息进行编码.如果编译器不会执行这样的优化,有没有办法创建这些类型的"富类型",零开销?

c++ optimization struct overhead compile-time

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