루비 수면 또는 1 초 미만 지연?


149

루비로 스크립트를 작성하여 초당 24 프레임으로 프레임을 렌더링해야하지만 명령을 보낼 때까지 1/24 초를 기다려야합니다. 잠깐 동안 잠을 잘 수있는 가장 좋은 방법은 무엇입니까?

답변:


202
sleep(1.0/24.0)

후속 방법이 최선의 방법이라면 다음과 같습니다. 아니요, 각 프레임의 렌더링에는 동일한 시간이 걸리지 않기 때문에 매끄럽지 않은 프레임 속도를 얻을 수 있습니다.

다음 솔루션 중 하나를 시도 할 수 있습니다.

  • 도면 코드와 함께 초당 24 회 발생하는 타이머를 사용하십시오.
  • 가능한 많은 프레임을 만들고 프레임 당이 아닌 시간을 기준으로 모션을 만듭니다.

14
@Funkodebat 나는 모든 기본 루비 런타임이 당신을 위해 이것을한다고 확신합니다.
Georg Schölly

2
@JosephSilvashy : 루비 인터프리터에 대한 통찰력은 없지만 루비 mri는 기본적으로 메모를하지 않습니다. 그러나 소스 코드를 바이트 코드로 변환하는 동안 이러한 종류의 최적화를 수행하기를 바랍니다.
Georg Schölly

8
DRY 원리의 변수에 1.0 / 24.0 값을 추출하는 것이 좋습니다. 다른 코드 조각도 그 값이 필요하므로 중복을 피하기 위해 중앙 위치에 보관해야합니다. 성능이 부작용이라면 훌륭합니다!
James Watkins

1
상수를 확실히 추출해야하고, "모든 성능을 얻을 수있는"이유 때문에 그렇게하지 않아야합니다.
Blake

4
그러나 프레임 당 한 번 실행되는 빠른 분할입니다. 프레임 자체의 렌더링이 계산 복잡성에서 훨씬 더 커지기를 바랍니다. 이것은 조기 최적화의 훌륭한 예입니다.
Alan H.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.