가능한 중복 전화 :
What makes JNI calls slow?오버 헤드
먼저 나에게이 질문은 실제 필요보다 더 호기심 많은 태어난 가정 해 봅시다.
Java에서 JNI 호출을 수행 할 때 오버 헤드가 무엇인지 알고 싶습니다. 예를 들어 System.arraycopy
과 배열을 할당하고 for 루프를 사용하여 요소를 복사하는 것입니다.
오버 헤드가 많은 경우 시스템 호출을 사용하는 대신 단순히 for 루프를 사용하여 보상하는 요소의 거친 "마법 번호"가있을 수 있습니다. 또한이 오버 헤드를 유발하는 시스템 호출에 정확히 무엇이 관련되어 있습니까? 스택이 호출 컨텍스트에 푸시되어야한다고 생각합니다.하지만이 작업은 다소 시간이 걸릴 수 있지만 전체 프로세스에 대한 좋은 설명을 찾을 수 없습니다.
은 내 질문을 명확히하자나는 arraycopy를 사용하여 자바에서 배열을 복사하는 가장 빠른 방법이라는 것을 알고있다.
말하자면, 하나의 요소 배열을 복사하는 데 사용하고 있다고 가정 해 보겠습니다. 기본 OS에서 호출하기 때문에 에는이 오버 헤드가됩니다. 이 오버 헤드가 무엇인지, 호출 과정에서 어떤 일이 발생하는지 알고 싶습니다.
arraycopy를 사용하여 내 질문의 목적을 잘못 이해하면 죄송합니다. JNI 호출의 오버 헤드와 실제 호출에 관련된 내용을 알고 싶습니다.
시스템 호출은 [시스템 호출] (https://en.wikipedia.org/wiki/System_call)과 혼동 될 수 있으므로 다소 혼란스러운 용어입니다. –
그건 그렇고, 거기에 정보가 풍부한 http://stackoverflow.com/questions/2772152/why-is-system-arraycopy-native-in-java – NPE
내 대답을 삭제, 이것이 도움이 될 것 같아요 : http : //stackoverflow.com/questions/7699020/what-makes-jni-calls-slow –