PLASLaboratory / ComputerProgramming3_CNU_2024

2024년 컴퓨터프로그래밍3 00분반, 01분반 컴퓨터프로그래밍3 질의응답을 위한 repository 입니다.
13 stars 1 forks source link

android 소스코드 속 중첩 for문 발견했습니다. #13

Open csh1668 opened 5 months ago

csh1668 commented 5 months ago

수업 시간에 언급하셨던 android 소스코드 속 중첩 for문을 발견했습니다.

image] 위치

image 위치

행렬 연산쪽에 있지 않을까 생각해서서 Matrix 위주로 찾아봤는데 역시나 있었네요.

CNUCOM commented 5 months ago

좋습니다! Java와 C/C++이 섞인 코드라 쉽게 나오진 않았을텐데 수고했습니다.

plnkList는 2차원배열을, plnkCoordList가 이 2차원배열의 한 행씩을 나타내는 나타내는 것으로 보입니다. CPDF_Array * 는 이름부터 배열포인터와 관련있어 보이네요.

CNUCOM commented 5 months ago

다른 사람들도, 안드로이드 소스 코드에서 중첩 for문 구조를 찾으면 여기 댓글이나 게시물로 공유해주기 바랍니다.

kimitoinf commented 5 months ago

많이 다른 주제이긴 합니다만, 본 글에 있는 Matrix4f.java의 loadMultiply 메소드는 왜 SIMD 명령어를 사용하지 않고 nested for loop를 사용하는지 궁금했습니다. 성능이 떨어지니까요. Java가 native하게 컴파일되는 언어가 아니다 보니 SIMD 명령어를 지원하지 않나 싶어 조금 구글링해 봤습니다.

https://openjdk.org/jeps/417

Java도 SIMD 명령어를 지원합니다. Intel의 x64 아키텍처의 SIMD 명령어인 SSE와 AVX, 대부분의 안드로이드 스마트폰 기기에서 사용되는 ARM의 aarch64 아키텍처의 SIMD 명령어인 SVE를 지원하고 있습니다. 다만, 저 둘밖에 지원하고 있지 않다는 것이 한계인 것 같습니다. 이와 같은 이유로 안드로이드는 반복문으로 직접 구현하고 있는 것이 아닌가 싶습니다.