问题标签 [scala-2.9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala 2.8 vs 2.9 基准测试,奇怪的结果
前段时间,我写了一些代码来决定用新值(但不创建新对象)更新可变变量的哪种方法更快。一种方法使用临时值并且有额外的复制,而另一种则没有。
代码示例 #1 - 重新分配
代码示例 #2 - 无需重新分配
完整代码在这里:http: //ideone.com/A62Ts
在我的 PC(scala 编译器 v. 2.8,jre7)上,结果看起来像预期的那样:
(是的,如果我增加测试长度,比例是一样的,编译器选项无关紧要。)
我在装有 Android OS 2.3.4 的手机上执行了此测试,获胜者仍然相同。但是,正如我们所见,在 Ideone.com 上发生了相反的事情,第二种方法要慢得多。那么你能解释一下,那里实际发生了什么吗?哪个(这两个)版本的 Scala 编译器工作正常?它是 scala-2.9.1 中的错误吗?
更新:在 scala 2.9 测试打印以下内容(尝试了很多次,没有太大变化):
并且对于任意数量的循环,第三次运行比所有其他运行都长。会导致GC吗?或者为什么还会发生这种奇怪的事情?如果我改为按b、b、a、b、b、a的顺序调用它们,那么就不会有这样奇怪的峰:
scala 2.8 中的结果(稳定):
scala 2.9 中的结果(稳定):
然而,在 scala 2.9 中重新分配的方法与在 scala 2.8 中一样长,但在 scala 2.9 中,快速方法大约慢 10 倍(但仍然比慢方法快大约 2 倍)。所以最初的问题仍然存在,为什么它在 scala 2.9 中要慢得多。
scala - 演员没有反应
看一下代码片段:
}
在 badActor 向发送者响应“bbbb”后,整个应用程序被阻塞。但如果我caller ! "bbbb"
改为sender ! "bbbb"
,它将起作用。
谁能解释为什么?
algorithm - 用于空模型的交换算法的 scala 版本
我遇到的问题是试图找到一种有效的方法来查找矩阵中的可交换元素,以便为创建空模型实现交换算法。
该矩阵由 0 和 1 组成,其想法是元素可以在列之间切换,以便矩阵的行和列总数保持不变。
例如,给定以下矩阵:
r1 和 r2 中的 c2 和 c4 列都可以以不改变总数的方式交换,即:
这一切都需要随机进行,以免引入任何偏见。
我有一个可行的解决方案。我随机选择一行和两列。如果它们产生 10 或 01 模式,那么我随机选择另一行并检查相同的列以查看它们是否产生相反的模式。如果其中任何一个失败,我会重新开始并选择一个新元素。
这种方法有效,但我只有大约 10% 的时间“命中”了正确的模式。在一个大矩阵或行中只有几个 1 的矩阵中,我浪费了很多时间“失踪”。我认为必须有一种更智能的方式来选择矩阵中的元素,但仍然随机进行。
工作方法的代码是:
我想一种更有效的处理方法是删除任何无法使用的行(全 1 或 0),然后随机选择一个元素。从那里我可以过滤掉行中具有相同值的任何列,并从剩余的列中进行选择。
一旦选择了第一行和第一列,我就会过滤掉不能提供所需模式的行,然后从剩余的行中进行选择。
这在大多数情况下都有效,但我不知道如何处理的问题是当没有列或行可供选择时会发生什么?我不想无限循环试图找到我需要的模式,如果我确实得到一个空的行或列列表可供选择,我需要一种重新开始的方法。
到目前为止,我拥有的那种工作的代码(直到我得到一个空列表)是:
我认为递归方法是错误的,在这里并没有真正起作用。另外,我真的只是想提高细胞选择的速度,所以任何想法或建议都将不胜感激。
编辑:
我有机会多玩一点,并提出了另一种解决方案,但它似乎并没有比随机选择矩阵中的单元快得多。另外,我应该补充一点,矩阵需要连续交换大约 30000 次才能被认为是随机的,并且我需要为每个测试生成 5000 个随机矩阵,我至少还有另外 5000 个可以这样做,所以性能很好的重要。
当前的解决方案(除了随机单元格选择之外是:
- 从矩阵中随机选择 2 行
- 从另一行中减去一行并将其放入数组中
- 如果新数组同时包含 1 和 -1 那么我们可以交换
减法的逻辑如下所示:
执行此操作的方法如下所示:
矩阵行减法如下所示:
实际的交换看起来像这样:
这比以前好得多,因为我尝试交换的成功率在 80% 到 90% 之间(随机单元选择只有大约 10%)但是......它仍然需要大约 2.5 分钟才能生成 1000 个随机矩阵。
关于如何提高速度的任何想法?
scala - 让 Scala 在 .net 上运行的分步指南?
我从未使用过 .Net 框架,需要向某人证明 Scala 确实适用于 .Net。我需要使用 Scala 在一些现有的 JVM Scala 代码上进行“快速而肮脏”的 .Net 设置。我找不到这方面的分步指南。我会很感激这方面的一些资源:
- 如何安装最小的 .Net 以及让 Scala 工作的版本。
- 如何安装 Scala 的 .Net 变体以及使用哪个版本(首选 2.9)。
- 如何让 hello world 运行。
提前致谢。有问题的平台:Windows 7 专业版 32 位。
scala - Scala 2.9 不会在 Ubuntu 12.04 上运行 HelloWorld
这个应该很简单,但我自己想不通。
我在 Ubuntu 12.04 系统上安装了 Scala 2.9.1。
该文件是helloworld.scala
:
scalac helloworld 完全没有问题。然后scala HelloWorld给出
我在论坛上多次看到这个问题,但发帖者通常只是混合类名和文件名,所以他们会尝试 scala helloworld,这不是我正在做的(对吗?)但我得到了同样的错误.
编辑
scala -classpath ./ HelloWorld
工作正常。所以这是一个类路径问题。
scala - 如何覆盖具有依赖返回类型的方法?
我在 Scala 2.9.2 实现一个声明依赖返回类型的方法时遇到了麻烦。以下代码
在 2.9.2 下编译期间会产生以下错误消息:
在 2.10.0-M4 中,问题似乎已得到解决,但不幸的是,我的项目目前与 2.9 相关联。
是否可以在 2.9.2 中解决此问题?
(或者,是否有 2.9.3 的前景,其中包括 2.10 的反向移植修复?)
scala - Scala隐式转换以某种方式阻塞
我用 Scalatra 写了一个小服务,它做了两件事:
- 提供 JSON 数据
- 提供与 Excel 工作表相同的数据
JSON 使用 spray-json、Excel 完成 - 使用 apache POI
基本上,我在 ScalatraServlet 实现中编写了两个方法:
这里toJson是用spray-json实现的,所以我只是提供了一个JsonWriter隐式转换。所以我决定写一个类似toExcel的转换。
现在,问题是:
如果我 import import cc.spray.json._
,则import excel.Imports._
scalac 会抛出错误serveJson
(值 toJson 不是类型参数 T 的成员)
如果我导入import excel.Imports._
,则import cc.spray.json._
scalac 会引发类似的错误serveExcel
(toExcel 的值不是类型参数 T 的成员)
令人惊讶的是,如果我只使用其中一个导入,一切都可以编译并正常工作(好吧,一半,因为我注释掉了一半,它使用了删除的导入)。
我的实施有什么问题?
链接到 spray-json 源,我用作参考:https ://github.com/spray/spray-json/tree/master/src/main/scala/cc/spray/json
斯卡拉版本 - 2.9.2
scala - 我应该报告这个断言失败吗?$asInstanceOf 到底是什么?
如果你用这个非常糟糕的代码片段打扰 Scala 编译器(2.9.1 或 2.10.0-M7)......
...它引发断言失败。问题:什么是$asInstanceOf
?我应该将此报告为错误吗?
这是堆栈跟踪:
scala - scala中使用递归的硬币兑换算法
我正在尝试使用递归在 Scala 中编写硬币找零问题。我写的代码如下。
在运行代码时,它不会终止并继续调用第一个递归调用。我哪里错了?
unit-testing - Scala、Scalatest 和 Maven 入门
我使用以下内容创建了一个新的 scala 项目:
这给了我以下POM:
我可以运行mvn test
并且示例测试运行成功。我想使用最新版本的 scala(我下载/安装了 2.9.2...),但org.scala-tools.testing scala_VERSION 依赖项的最新版本似乎是 2.9.1。我在我的 POM 中进行了以下更改:
和
现在,跑步mvn test
给
我大概有一些可能的最简单的测试(由 maven 原型插件创建的样本),并且通过单个次要版本碰撞 scala 会破坏它们?我应该坚持使用 scala 2.8 直到 maven 工具赶上来吗?