문제

누군가가 정확한 속도 테스트 중 하나를 테스트 할 수 있는지 알고 있거나 가지고 있는지 궁금합니다. Actionscript 3 (차이가있는 경우 Air 2.5)에서 "보다 작지 않음"대 "크거나 같음"속도?

이 컴퓨터에서 가상 머신을 실행하고 있는데 결과가 매우 정확하지 않습니다.

그대로 사용 라코 디스

또는 라코 디스

첫 번째를 생각했을 것입니다. 모든 작업이 1 번의 테스트이고 그 다음에는 되돌릴 수 있기 때문입니다.하지만 액션 스크립트 3에는 확신 할 수없는 몇 가지 단점이 있습니다.

도움이 되었습니까?

해결책

이론상 속도 차이가 있어서는 안됩니다.ActionScript는 nanojit JIT 라이브러리를 사용하여 코드를 컴파일하고, 비교를 구현하는 코드가 비교의 반전과 같은 간단한 변환을 변환한다는 사실을 알고 있습니다.역 비교로.따라서 이론적으로 유일한 차이점은 코드를 컴파일하는 데 소요되는 또 다른주기입니다.이것은 걱정할 가치가 없습니다.

반면에 최신 CPU는 복잡한 짐승이며 극히 작은 섭동은 눈에 띄는 차이를 만들 수 있습니다.따라서 둘 사이에 차이가 없다고 확신 할 수는 있지만 농장에 걸지는 않을 것입니다.

다른 팁

귀하의 질문은 대부분의 언어가 가능한 한 가장 최적의 기계어 코드로 컴파일을 시도하기 때문에 특히 액션 스크립트보다 컴퓨터 과학과 관련이 있습니다.

그래서 C ++ 예제를 사용하여 귀하의 질문에 답하겠습니다. 라코 디스

이렇게하면 어셈블리에서 다음과 같은 핵심 섹션이 생성됩니다. 라코 디스

00231375 및 00231382 행은 if 문에 포함 된 실제 테스트입니다.보시다시피, 내 <및>= 테스트는 어셈블리에서 동일한 코드로 컴파일되었습니다 (두 정수를 비교할 때).따라서 두 테스트 모두 동일한 테스트를 수행하므로 CPU에서 동일한 시간이 걸립니다 (왼쪽 <오른쪽이면 블록이면 건너 뛰기).이것은 대부분의 경우 액션 스크립트 컴파일러의 경우입니다.

그러나 JIT 컴파일러가! ([int] <[int]) 또는 [int]>= [int]를 컴파일하는 데 더 오래 걸리는지에 대한 질문이있을 수 있습니다.내 생각 엔 그 차이는 아마도 중요하지 않을 것입니다.

루프를 만들고 getTimer ()를 사용하여 발견하십시오.다음과 같이 시도하십시오. 라코 디스

또한,이 기술로 불명확 한 결과를 얻으면 카운트 변수를 더 크게 만드십시오.">"및 ">="성능 을 확인해야하는 경우 루프에서 "_vector.lenght"확인을 제거하는 것이 유용 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top