2009-10-27 4 views

답변

3

중요한 점은 UI가 얼마나 반응하는지입니다.

Jef Raskin (Mac UI 명성)은 최대 지연 시간을 50ms로 제한해야한다고 말했습니다. RISC OS 가이드 라인은 100ms라고 말했다. 버튼 클릭 수는 약 50 밀리 초이므로 릴리스시 작동하려면 사용자 모델이 일반적으로 클릭 동작 인만큼 빠르게 작동해야합니다. 140ms 이상에서는 반응이 없을뿐만 아니라 사용자 반응과 UI 연결이 끊어지는 것처럼 보입니다 (예 : O'Reilly의 Mind Hacks 참조).

250-350 ms (정상적인) 사용자는 무엇인가 잘못되었다고 생각할 것입니다.

사물의 다른 측면에서 애니메이션 (예를 들어) 스크롤과 같은 환상을 갖기 위해서는 8fps (및 포함 렌더링)이 필요합니다. 게이머들이 자신의 fps를 어떻게 사용하는지 알고 있습니다.

그러나 나는 사용할 수없는 최상의 소프트웨어보다 다소 효과가있는 소프트웨어를 선호합니다. 그런데,이 편집의 중간에 디스크를 두드리는 동안 오페라를 몇 분 동안 잠궈 두는 것은 저를 기쁘게하지 못했습니다.

+0

<~ 100 ms는 우리가 항상 사용했던 것입니다 (OS 가이드 라인은 이것에 대한 자세한 경험과 사용자 피드백을 제공합니다).하지만 당신은 상황이 지연 ​​될 수있는 지에 대해 하이퍼 인식해야합니다. 배포 후 상당히 느려질 수 있음). 우리의 사내 규칙은 특별히 UI를 업데이트하는 데 도움이되지 않는 * 아무것도 * 작업자 스레드에 들어가야한다는 것입니다. 어떤 것이 간접적으로 UI를 업데이트하면 (즉, 바인딩을 통해 UI 새로 고침을 트리거하는 데이터 모델을 업데이트하는 경우) 백그라운드 스레드에서 수행됩니다. –

0

특정 번호가 없기 때문에 앱이해야 할 일과 GUI가 얼마나 반응해야하는지에 대한 문제입니다. 가장 좋은 방법은 몇 가지 테스트를하는 것입니다. 아무도이 문제에 답변 할 수 없습니다. (비록 당신이해야 할 검사를 결정할 때 의견이 유용 할 지 모르지만)

1

저에게는 1 초가 될 것입니다.

처리량 이상으로 처리하면 UI가 정지됩니다. 이 상황에서 "바쁜"페인트 또는 진행률 표시 줄을 표시하는 것이 훨씬 좋습니다.

사용하는 응용 프로그램을 기다리는 동안 응답 시간이 얼마나 소요됩니까? IDE 또는 MS-Word 또는 기타를 여는 경우를 가정 해 봅시다. 대부분의 시간을 알아 채면 응용 프로그램이로드 될 때 진행 막대 또는 기타 애니메이션이 표시됩니다. 문서/프로젝트/기타가 2 초 안에 열릴 정도로 작을 때도 표시됩니다.

+1

개발자보다 느린 상자를 사용하는 사용자를 고려해야합니다. –

+0

1 초가 길다. 100ms가 더 적절할 것 같습니다. – Nemi

0

장기 실행 작업은 사용자가 UI를 다시 그릴 때 글리치 또는 지연을 느낄 수있을만큼 길어집니다. 레이블의 텍스트를 설정하는 것이 "장시간 실행"되지는 않지만, 오프 스크린 비트 맵에 이미지를 그리는 데 몇 밀리 초가 걸리면 눈에 띄게 오래 사용할 수있는 UI 다시 그리기가 지연 될 수 있습니다. 당신이 당신도 좋은 후보는 등 잘못된 데이터와 극단적 인 경우에 반응 applciation 유지할으로 처리가 별도의 스레드에 넣어 좋은 생각이 될 것입니다 얼마나 걸릴지 예측할 수없는 경우 기본적으로

+0

레이블의 텍스트를 설정하거나 필드의 텍스트를 가져 오는 것은 EDT에서 수행해야합니다. – Rhangaun

+0

@Skeptic - 이것은 JLabels에 해당하지만 JTextComponent.setText()는 스레드 안전성이있는 드문 Swing 메소드 중 하나입니다. 여기를 참고하십시오 : http://java.sun.com/javase/6/docs/api/javax/swing/text/JTextComponent.html – Nemi

+0

@ 네미, 항상 스윙에 대해 배울 무언가가 있습니다! – Rhangaun

0

  • 모델의 모든 필드에서 값 비싼 작업을 수행하고 있습니다.
  • 외부 데이터 원본 또는 대상에 따라 다릅니다. 그것이 느린 네트워크 드라이브인지 또는 유사한 지 알 수 없습니다. 다음이 SwingWorker를 간다은 (동안 /에 대한) 루프를 가지고 경우

그러나 왜 그냥 단순히 규칙을 만들?

+0

"루프"는 객체 생성시 깊이 숨길 수 있습니다 ... – Rhangaun

+0

당연히. 엄지의 규칙은 구석을 가지고있는 경향이 있습니다. –

관련 문제