그래서 바퀴를 새롭게 개조하고 Color
클래스를 작성했습니다.어느 것이 더 효율적입니까?
나는 색상의 빨강, 초록, 파랑 및 알파 값을 설정하는 세터 메소드가 있습니다. 그러나 색이 int
으로 저장되었으므로이 작업을 올바르게 수행하려면 몇 가지 연산을 수행해야합니다. 도중에 내가 더 효율적입니다 다음 중 궁금해하기 시작의 : 기본적으로 나는, 기존의 색상 값을 복용 이전 빨강/녹색/청색 성분을 뺀 새로운 하나를 추가하고
public void setR(int r) {
color = color - (color & 0xFF) + r;
}
public void setG(int g) {
color = color - ((color >> 8) & 0xFF) + (g << 8);
}
public void setB(int b) {
color = color - ((color >> 16) & 0xFF) + (b << 16);
}
public void setA(int a) {
color = color - ((color >> 24) & 0xFF) + (a << 24);
}
.... 내 두 번째 전략 : 나는 적색/녹색/파랑/알파 성분을 "빼기"를 선택한 다음 새로 추가 색상에 비트 단위 OR 연산을 수행하고
public void setR(int r) {
color = (color & 0xffffff00) + r;
}
public void setG(int g) {
color = (color & 0xffff00ff) + (g << 8);
}
public void setB(int b) {
color = (color & 0xff00ffff) + (b << 16);
}
public void setA(int a) {
color = (color & 0x00ffffff) + (a << 24);
}
....
나는 두 번째 방법이 더 효율적이라고 확신하지만 내가 틀렸다면 나를 교정 해주세요!
차이점을 측정 할 수 있습니까? –
말할 수는 없지만 테스트하기가 쉽습니다. – Philippe
매우 적은 양의 효율성을 다룰 때 효율성보다 가독성을 높이는 것이 항상 바람직하다고 생각합니다. –