我正在尝试创建修改集合的基准.问题是我不知道如何为每次调用初始化数据.
假设Test.DATA是一个包含200个元素的集合.
该test方法根据a.isTrue()值来删除数据.
我知道这@Setup与JUnit类似@Setup.我想用,@Before
但我在JMH找不到一个.如何在test调用方法之前每次初始化数据?
非常感谢你提前.
@State(Scope.Thread)
public class JavaCollectionBenchmark {
List<Foo> cols;
@Setup
public void prepare(){
cols= new ArrayList<>(Test.DATA);
}
@Benchmark
public long test(){
if(cols.size() != 200) {
System.out.println("SECOND TIME DOESN'T WORK!");
System.exit(0);
}else{
System.out.println("FIRST TIME");
}
cols.removeIf(a-> a.isTrue());
return cols.size();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在通过播放插件使用Slick 2.0,以下是我的表映射
class Tasks(tag: Tag) extends Table[Task](tag, "Tasks"){
def id = column[Option[Long]]("id", O.PrimaryKey, O.AutoInc)
def txt = column[String]("txt")
def done = column[Boolean]("done")
def * = (id, txt, done) <> (Task.tupled, Task.unapply)
}
Run Code Online (Sandbox Code Playgroud)
然后,我像这样创建了TableQuery对象
val tasks = TableQuery[Tasks]
我曾经tasks.list得到List[Task]哪个返回正确,但是当我想通过使用对结果进行排序时,tasks.list.sortBy(_.id.get.desc)
我得到了这个错误
没有为scala.slick.lifted.ColumnOrdered [Long]定义隐式Ordering。
任何的想法?