我需要将一系列值(value_range)与数据表中的行进行比较,然后将结果编译为value_range中每个值的总和。
下面的方法#1显示了我想要做的最好的事情。 10次循环只是为了比较系统所需的时间。
implicit val myReads: Reads[MyCustomObject] = (
(JsPath \ "key1").read[String] and
(JsPath).read[CustomObject] and
(JsPath \ "key3").read[String] and
(JsPath \ "key4").readNullable[String] and
(JsPath \ "key5").read(JsValue) and
(JsPath \ "key6").read[Seq[CustomObject2]]
)(key1: String, custom: CustomObject, key3: String, key4: Option[String,
key5: JsValue, key6: Seq[CustomObject2){
SearchQuery.apply(key1, custom, key3, key4, transformToMap(key5), key6) // Where transformToMap is a custom function that I have defined.
}
有没有办法进一步提高速度?
答案 0 :(得分:3)
system.time(
for(j in 1:10) {
res3 <- d[, vapply(value_range,
function(i) sum((i > c1) & (i > c2)),
FUN.VALUE = 1L)]
})
#user system elapsed
#0.15 0.01 0.15
all.equal(res1$V1, res3)
#[1] TRUE