flex 4.6.0 + AIR 14.0 SDK를 사용하여 Android OS를 대상으로 AIR 응용 프로그램을 개발 중입니다. 일반적으로 2048 개의 요소가 포함 된 Numbers 벡터를 사용하고 알고리즘을 사용하여 주어진 벡터에서 하나의 Number를 생성 한 다음 결과에 따라 일부 그리기를 수행합니다 - 그리고 매 100ms마다 반복합니다.AIR Java 확장의 벡터 전송 속도
그 것은 성능입니다 위에서 언급 한 알고리즘은 내가 원하는만큼 좋지는 않지만 종종 50ms에서 100ms 사이에서 작동하지만 일부 상황에서는 이상을 처리 할 수 있으며 그 처리에는 약 50-60ms가 소요됩니다. 그래서 as3보다 더 빠르다고 생각했기 때문에 복잡한 계산을 할 자바 네이티브 확장을 만들려고했습니다. C가 10 배 빠름, C 확장은 iOS에서만 사용 가능하다는 것을 알았습니다. 내게 문제가되는 것은 확장 속도가 훨씬 느린 것으로 보이고 확장이 사물의 속도를 높이기 위해 사용되기 때문입니다.
이상한 점은 확장을 호출하고 1-2ms 동안 배열 길이를 반환하면 AS3 객체의 모든 배열 요소를 Java double []에 복사 할 때 약 700-800ms가 필요하다는 것입니다. 나를 괴롭힌다. 내가 확장 Java 메소드가 시작되면 모든 데이터가 전송되는 것을 생각했지만, 왜 다음 호출
인수 [0] .getElementAt [0] .getAsDouble() 2048
너무 오래 지속, 내가 뭔가 잘못하고 있어요, 에어와 익스텐션 간의 데이터 전송이 어떻게 세부적으로 작동하는지 어떻게 알 수 있습니까? 또는 누군가가이 문제를 해결하는 더 좋은 방법을 알고 있다면 정말 감사 할 것입니다. 내가이 튜토리얼을 기반으로 모든 것을했지만 내 코드보다 훨씬 간단합니다, 그래서 나는이 게시하도록하겠습니다 -
는 여기에 몇 가지 유용한 링크 Android extension API reference 및 Extension code tutorial 있습니다.
저는 오래 전 네이티브 확장 프로그램을 사용하고 비슷한 문제가 있음을 기억합니다. 나는 액션 스크립트 코드와 네이티브 확장 간의 통신이 그다지 빠르지 않다고 생각한다. – Ingweland
귀하의 기여에 감사드립니다. 그래, 내가이 일을 시작했을 때 나의 주요 관심사 였지만 자바 확장 메서드를 입력하는 것이 빠르며 args 언 패킹이 느리다. 나는 그 반대의 상황을 예상했다 :) –
Actionscript의 알고리즘이 잘 최적화되어 있는지 확인 하시겠습니까? 그것을 더 좋게 만드는 것이 가치가있을 수 있습니다. 또한 고정 크기 벡터를 사용하고 있습니까? 조금 더 빠를 수도 있습니다. – Ingweland