LINUX.ORG.RU

История изменений

Исправление RedPossum, (текущая версия) :

вот очень наивная реализация прогрева

import java.io.{File, FileInputStream}
import org.yaml.snakeyaml.Yaml

object yamlBnch {
  val WAMRING_TIMES=100;
  val BENCH_TIMES=50;

  def parseYaml():Int={
    val input = new FileInputStream(new File("data.yml"))
    val yaml = new Yaml()
    val data = yaml.load(input).asInstanceOf[java.util.LinkedHashMap[String, String]]
    input.close();
    data.size();
  }

  def main(args:Array[String]){
    println("Start warming")
    for ( i <- 0 until WAMRING_TIMES){
        parseYaml()
    }
    println("Stop warming")

    var timeResults=List.empty[Long]
    var keysCountResults=List.empty[Int]
    println("Start bench")

    for ( i <- 0 until BENCH_TIMES){
        val start=System.currentTimeMillis()
        var currentKeyResult=parseYaml()
        val stop=System.currentTimeMillis()
        keysCountResults=(currentKeyResult)::keysCountResults
        timeResults=(stop - start)::timeResults
    }

    println("Stop bench")

    val finalTimeResult = timeResults.sum/timeResults.size
    val finalKeySum=keysCountResults.sum

    println((finalTimeResult/1000.0)+" | "+finalKeySum)

  }
}

Собственно парсер тот же (snakeyaml). Результат:

 java -jar -client yamlbench.jar 
Start warming
Stop warming
Start bench
Stop bench
0.932 | 250

0.932 секунды

Исходная версия RedPossum, :

вот очень наивная реализация прогрева

import java.io.{File, FileInputStream}
import org.yaml.snakeyaml.Yaml

object yamlBnch {
  val WAMRING_TIMES=100;
  val BENCH_TIMES=50;

  def parseYaml():Int={
    val input = new FileInputStream(new File("data.yml"))
    val yaml = new Yaml()
    val data = yaml.load(input).asInstanceOf[java.util.LinkedHashMap[String, String]]
    input.close();
    data.size();
  }

  def main(args:Array[String]){
    //warming
    println("Start warming")
    for ( i <- 0 until WAMRING_TIMES){
        parseYaml()
    }
    println("Stop warming")

    var timeResults=List.empty[Long]
    var keysCountResults=List.empty[Int]
    println("Start bench")

    for ( i <- 0 until BENCH_TIMES){
        val start=System.currentTimeMillis()
        var currentKeyResult=parseYaml()
        val stop=System.currentTimeMillis()
        keysCountResults=(currentKeyResult)::keysCountResults
        timeResults=(stop - start)::timeResults
    }

    println("Stop bench")

    val finalTimeResult = timeResults.sum/timeResults.size
    val finalKeySum=keysCountResults.sum

    println((finalTimeResult/1000.0)+" | "+finalKeySum)

  }
}

Собственно парсер тот же (snakeyaml). Результат:

 java -jar -client yamlbench.jar 
Start warming
Stop warming
Start bench
Stop bench
0.932 | 250

0.932 секунды