2009-06-22 4 views
0

이 두 코드간에 성능 차이가 있습니까? 나의 직감은 셀 객체가 매번 생성되어야하기 때문에 두 번째 옵션이 더 느리다는 것입니다. 그러나 셀을 반환하는 아이디어를 좋아합니다.이 두 코드간에 성능 차이가 있습니까?

옵션 1 :

//Call to method 
initiTextDefaultCell(borders); 
iTextTable.setDefaultCell(iTextDefaultCell); 
//Other code... 

private void initiTextDefaultCell(boolean borders) { 
    if (!borders) 
    iTextDefaultCell.setBorder(Rectangle.NO_BORDER); 
    else 
    iTextDefaultCell.setBorder(Rectangle.BOX); 
} 

옵션 2 :

//Call to method 
iTextTable.setDefaultCell(initiTextDefaultCell(borders)); 
//Other code... 

private Cell initiTextDefaultCell(boolean borders) { 
    Cell iTextDefaultCell = new Cell(); 
    if (!borders) 
    iTextDefaultCell.setBorder(Rectangle.NO_BORDER); 
    else 
    iTextDefaultCell.setBorder(Rectangle.BOX); 
    return iTextDefaultCell; 
} 

감사합니다!

+4

좁은 루프에서 호출하는 코드 종류와 모양이 다릅니다. 이 기능을 최적화하려고하는 성능 문제가 있습니까? –

+0

iText PDF 생성기와 관련이 있습니까? – akarnokd

답변

4

새로운 개체 할당으로 인해 옵션 2가 느려질 것이라고 말했던 것처럼.

코드 명확성 대 성능 결정입니다. 필자는 개인적으로 옵션 2가 더 명확하고 성능에 미치는 영향은 무시할 수 있다고 생각합니다.

그러나 iTextTable을 알지 못하고 어떤 것을 사용할지는 분명하지 않습니다. 테이블이 인스턴스화 될 때 initiTextDefaultCell이 한 번 호출되면 두 번째 옵션을 사용합니다. 그러나 initiTextDefaultCell 호출 횟수가 테이블의 크기에 달려 있다면 옵션 셀이 더 좋을 것입니다 (기본 셀이 다음과 같이 인스턴스화되었다고 가정 함). iTextTable의 인스턴스 생성의 일부).

18

테스트 프로그램을 작성하고 직접 확인하십시오.

2

두 번째 것 (아마도) 느립니다 (단, Mnementh의 설명 참조). 첫 번째 작업과 그 이상의 작업은 모두 수행합니다. 그러나 이것이 더 나은 디자인이라 생각하면 사용하지 말아야한다는 것을 의미하지는 않습니다. Lou가 말했듯이, 이것은 아마도 병목 현상이 아닙니다. 확실하게 알고 싶다면 테스트하십시오.

+2

그렇게 확신하지 마십시오. 첫 번째 코드는 동일한 코드이며 코드 조각에 생략 된 변수 iTextDefaultCell이 작성됩니다 (단, 코드를 실행하려면 분명히 필요합니다). 따라서 두 옵션 모두 동일한 명령을 수행하지만 구조가 다릅니다. 가장 큰 차이점은 첫 번째 옵션은 메소드에서 볼 수있는 변수를 사용한다는 것입니다. 두 번째 것은 대신이 객체 자체를 생성하고 반환합니다. 어쨌든 동일한 기본 코드로 최적화 될 수 있습니다. 그러나 아무도 그것을 테스트하지 않고 말할 수 있습니다. – Mnementh

+0

iTextDefaultCell은 옵션 1에 대해서만 만들어야한다고 가정하고 있습니다. 생성물은 어느 쪽이나 표시되지 않으므로 어느 쪽이든 (아마도 나중에) 필요하다고 생각하는 것이 합리적입니다. –

3

흠 ... 더 느리거나, 10ms 또는 1ms입니까?

옵션 2는 옵션 1보다 속도가 느릴 수 있지만 차이가 10 인 경우에도 느린 버전이 충분히 빠를 때 "높은"요인 일지라도 사람이 알아 채지 못할 것입니다. 사용 된 것은 예제로 주어짐).

성능의 첫 번째 규칙은 필요할 때만 최적화하는 것입니다. 성능의 두 번째 규칙은 일반적으로 성능이 좋고 필요할 때 쉽게 최적화 할 수있는 잘 설계된 시스템입니다.

옵션 2는 훨씬 더 읽기 쉽고 더 좋은 디자인입니다. 이는 셀을 생성하는 메소드가이를 구성하기 때문입니다.

관련 문제