小编wai*_*ray的帖子

为什么我的Scala尾递归比while循环更快?

这里有两个解决方案,在Cay Horstmann的Scala for the Impatient中运用4.9:"写一个函数lteqgt(values:Array [Int],v:Int),它返回一个包含小于v的值的三元组,等于v,并且大于v." 一个使用尾递归,另一个使用while循环.我认为两者都会编译成类似的字节码,但是while循环比尾递归慢了近两倍.这告诉我,我的while方法编写得很糟糕.

import scala.annotation.tailrec
import scala.util.Random
object PerformanceTest {

  def main(args: Array[String]): Unit = {
    val bigArray:Array[Int] = fillArray(new Array[Int](100000000))
    println(time(lteqgt(bigArray, 25)))
    println(time(lteqgt2(bigArray, 25)))
  }

  def time[T](block : => T):T = {
    val start = System.nanoTime : Double
    val result = block
    val end = System.nanoTime : Double
    println("Time = " + (end - start) / 1000000.0 + " millis")
    result
  }

  @tailrec def fillArray(a:Array[Int], pos:Int=0):Array[Int] = {
    if (pos == a.length)
      a
    else { …
Run Code Online (Sandbox Code Playgroud)

performance loops scala tail-recursion

35
推荐指数
2
解决办法
3759
查看次数

如何在SJCL中实现公钥/私钥加密?

我使用Stanford Javascript Crypto Library(SJCL)进行对称AES加密(基于其演示页面上的示例).但是,我还需要生成密钥对,使用公钥加密数据,并使用私钥解密数据.一些类名表明这可能在SJCL中有可能,但我想知道是否有人可以帮助一个如何完成它的例子.我不关心这个阶段的私钥存储,只是内存生成和使用公钥/私钥对.

如果不可能,我会对有关AES和公钥加密的替代库的建议感兴趣 - 但我知道这是我可以自己研究的东西!所以主要是我很想知道我开始使用的库是否可以满足我的所有需求,或者我是否需要寻找替代方案.

javascript cryptography rsa aes sjcl

8
推荐指数
2
解决办法
3584
查看次数

标签 统计

aes ×1

cryptography ×1

javascript ×1

loops ×1

performance ×1

rsa ×1

scala ×1

sjcl ×1

tail-recursion ×1