Se IIUC ogni fork crea una macchina virtuale separata per il motivo che ciascuna istanza della macchina virtuale potrebbe essere eseguita con leggere differenze nelle istruzioni JIT?Qual è lo scopo di JMH @Fork?
Sono anche curioso di ciò che l'attributo tempo fa nelle annotazioni di seguito:
@Warmup(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
TIA, Ole
Penso che risponda alla tua domanda: http://stackoverflow.com/questions/25572778/why-does-jmh-run-different-forks – Tunaki
Quindi IIUC, ogni fork viene eseguito in una VM separata. Lo facciamo perché potrebbe esserci una sottile differenza per ogni VM lanciata che farà sì che il runtime differisca, quindi possiamo tener conto di questo calcolo della varianza? – Ole
Sì, potrebbero esserci differenze tra ogni esecuzione nel modo in cui il JIT si comporta in modo tale da consentire di tenerne conto. Durante l'esecuzione di benchmark, ho visto casi estremamente strani in cui una corsa avrebbe avuto una certa media e un'altra sessione per lo stesso test avrebbe avuto una molto diversa, "semplicemente" perché la JIT gestiva le cose in modo diverso. – Tunaki