2015-11-20 15 views
5

Sto provando a creare il punto di riferimento che modifica la collezione. Il problema è che non so come inizializzare i dati per ogni chiamata.Come inizializzare i dati per ogni chiamata in JMH?

Si supponga che Test.DATA sia una raccolta che contiene 200 elementi.
Il metodo test rimuove i dati in base al valore di a.isTrue().
So che @Setup è simile a @Setup di JUnit. Voglio usare @Before ma non sono riuscito a trovarne uno in JMH. Come posso inizializzare i dati ogni volta prima che venga invocato il metodo test?
Grazie mille in anticipo.

@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(); 
    } 
} 
+1

Avete letto JMH campioni, come suggerito in Documenti? In particolare, questo esempio risponde direttamente alla tua domanda: http://hg.openjdk.java.net/code-tools/jmh/file/bcec9a03787f/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_38_PerInvokeSetup .java –

+0

Oh scusa non avrei dovuto fare questa domanda quando la risposta è già nei campioni. Ammetto di non aver letto tutti gli esempi di codice. Per alcuni motivi, i miei occhi continuavano a guardare stati e infissi. – hussachai

risposta

2

Controllare Level parametro @Setup annotazione. L'equivalente di @Before è

@Setup(Level.Invocation) 

che si spiega, insieme a molti avvertimenti (WARNING: HERE BE DRAGONS! THIS IS A SHARP TOOL., etc.) here

+1

Grazie. Ho già ricevuto la risposta dall'autore di JMH nella sezione commenti. Segnalo come una risposta per il tuo sforzo. Ho scritto l'articolo sull'utilizzo di JMH: https://medium.com/zappos-engineering/java-8-vs-scala-part-iii-trust-no-one-bench-everything-ef0bbd6e9cdb#.fypijj48e Se si avere a volte da rivedere e darmi un feedback, lo apprezzerei. – hussachai

Problemi correlati