Я разработал программу, предназначенную для измерения расхода времени, а во избежание порога System.currentTimeMillis()
для крошечного выполнения (может занять менее 1 миллиметра) (это неизбежно приведет к допустимой неточности для дополнительных операций), но count
окажется 222 любых утверждений внутри Метод run()
(ограничен базовыми алгоритмами). Я не могу понять какое-либо возможное объяснение, звучит невероятно, но, возможно, нижний предел для исполнения?Есть ли нижняя граница времени выполнения для Java?
public static void main(String[] args) throws Exception{
long result=TinyTimer(new Runnable(){
@Override
public void run(){
double d=190283758/287365628;
}
});
System.out.println(result);
}
public static long TinyTimer(Runnable r){
long count=0;
long origin=System.currentTimeMillis();
while(System.currentTimeMillis()==origin){
r.run();
count++;
}
return count;
}
Я уверен, что вы можете получить меньше 222, если вы поместите много операций в метод (например, Thread.sleep). – Thilo
Вы можете использовать System.nanoTime для более точных измерений. – Thilo
Странно, я несколько раз запускал ваш код и получал счета от 2000 до 700 000. –