当前位置: 首页 > 知识库问答 >
问题:

如何正确和简单地配置一个函数在scala?

拓拔俊艾
2023-03-14

我试图在Scala中反转包含unicode字符的字符串。我想找到最快的方法。到目前为止,我有以下代码:

import scala.runtime.RichChar

def reverseInPlace(s: String): String = {
   val reverse = new Array[RichChar](s.length)   
   for (i <- (0 to (s.length >> 1))) {
     reverse(i) = s(s.length -i -1)
     reverse(s.length -i -1) = s(i)
   }
   return reverse.mkString
}

def reverseLeft(s: String): String = s.foldLeft("") ( (a,b) => 
    b + a
)

def reverseRight(s: String): String = s.foldRight("") ( (a,b) => 
    b + a
)


def time[R](iterations:Int, block: => R) = {
    val t0 = System.nanoTime()
    for ( i <- 0 to iterations){
       block    // call-by-name
    }
    val t1 = System.nanoTime()
    println("Elapsed time: " + (t1 - t0) + "ns")
}


time(1000, {
    reverseRight("Hello\u0041")
})

time(1000, {
    reverseInPlace("Hello\u0041")
})

time(1000, {
    reverseLeft("Hello\u0041")
})

time(1000, {
    "Hello\u0041".reverse
})

在我的macbook 2013上,我得到了以下结果:

Elapsed time: 37013000ns
Elapsed time: 23592000ns
Elapsed time: 11647000ns
Elapsed time: 5579000ns

但我觉得这些数字是假的。我该如何使用scala、sbt和JMH库对函数进行适当的基准测试

注意:正如评论中指出的,Java中的微基准测试是一项严肃的业务。请参阅(我如何在Java中编写正确的微基准测试?)和https://groups.google.com/d/msg/mechanical-sympathy/m4opvy4xq3U/7lY8x8SvHgwJ.为什么不应该尝试在不使用外部库的情况下进行微基准测试。

暂时还没有答案

 类似资料:
  • 我有一个java web应用程序,它使用logback和slf4j进行日志记录。并且这个项目有一个依赖项jar(它是一个子项目)。这个依赖项jar使用org.apache.log4j.logger进行日志记录。所有日志必须放入一个日志文件中。我的问题是,我用jar文件中的代码记录的任何东西都没有写入日志文件。最初我有logback.xml。为了解决上述问题,我在web应用程序中添加了log4j.p

  • 我们以一个下面简单的FreeRADIUS配置来开始这一章 本机作为一个NAS设备(RADIUS客户端) Alice定义为一个测试用户. 在我们已经定义客户端和测试用户之后, 我们将会使用radtest程序来作为RADIUS客户端的角色并且测试Alice的authentication.

  • 我最近一直在试验Typescript装饰程序,试图解决应用程序中的一个“问题”。我正在使用JS桥向Android和iOS提供TS代码,目前我们声明如下函数: index.js 上述操作将使函数在网桥的本机端可用 我想写一个decorator应用于方法,它将在但我的任务失败了。 这是起作用的装饰师: 我如何添加另一个方法到函数?

  • 我正在用Java Swing制作一个游戏,其中有一个大POJO用来存储游戏的运行时数据,比如精灵的位置、当前显示的效果等等。我希望能够将其作为JSON保存到一个文件中,然后在以后重新构建。我发现Gson应该就是这么做的,但到目前为止我还没能让它工作。我总是遇到这样一个问题:它无法使嵌套在存储类中的某些变量可访问。 以下是我目前使用Gson的方式: 以下是我当前尝试使用时收到的错误消息: 是我在开头

  • 我试图完成本教程,但我认为在配置网页时遇到了一些问题。我正在一步一步地制作教程,但它不起作用。。 错误]无法执行目标com。github。eirslett:frontend maven插件:1.10.3:project shop上的webpack(webpack生成):无法运行任务:“webpack”。js'失败了。组织。阿帕奇。平民执行官。ExecuteException:进程已退出,但出现错误

  • 这里一定有解决办法。我一点也不相信JSF的Maven发行版只适合编译而不适合部署。