3
작은 게임을 위해 밀리 초 정확한 타이머를 구현해야합니다. 어떤 방법이 가장 적합할까요? 나의 현재 접근 방식은 System.currentTimeMillis()를 사용하는 것이다. 충분히 잘 작동하는 것 같지만, 내가 모르는 어떤 함정이있을 수 있습니다. 타이밍에 대한 표준 접근 방식은 무엇입니까?Android 간단한 타이밍 질문
작은 게임을 위해 밀리 초 정확한 타이머를 구현해야합니다. 어떤 방법이 가장 적합할까요? 나의 현재 접근 방식은 System.currentTimeMillis()를 사용하는 것이다. 충분히 잘 작동하는 것 같지만, 내가 모르는 어떤 함정이있을 수 있습니다. 타이밍에 대한 표준 접근 방식은 무엇입니까?Android 간단한 타이밍 질문
타이머는 시스템에서 구현 한 것만 큼 유용합니다. 그것은 단순히 그것보다 좋아지지 않을 것입니다.
전직 전문 게임 개발자이므로 (아직도 프로젝트를 수행하고 있습니다.) 밀리 초 단위의 정확도 요구 사항을 권장합니다. 당신은 아마 그것을 필요로하지 않습니다.
이 프로그램을 사용하여 시계의 정확성을 확인합니다
/*
C:\junk>javac TimerTest.java
C:\junk>java TimerTest
Your delay is : 16 millis
C:\junk>
*/
class TimerTest {
public static void main(String[] args) {
long then = System.currentTimeMillis();
long now = then;
// this loop just spins until the time changes.
// when it changes, we will see how accurate it is
while((now = System.currentTimeMillis()) == then); // busy wait
System.out.println("Your delay is : " + (now-then) + " millis");
}
}
너무 많은 것들이 같은 컨텍스트 스위치로 그 프로그램의 출력에 영향을 미칠 수있는 것 같다. 나는'currentTimeMillis' 정확성에 너무 많은 압력을 가하지 않는 것이 옳다고 생각합니다. –
@Matthew, 당신은 절대적으로 맞습니다. 내가 수없이 많은 시간을 실행할 때, 일관된 16 또는 17을 얻었습니다. 결코 변하지 않았습니다. 당신은 내가하려고하는 정확한 지점을 만듭니다 :'currentTimeMillis'의 정확성에 의존하지 마십시오. – corsiKa
데이터를 제공해 주셔서 감사합니다. 그게 재미있어! –