답변:
@jwenting 이 좋은 점을 제시 하지만 일반적인 평가에 동의하지 않아야 합니다.
사용자는 종종 약간의 성능 향상을 느끼지 못합니다.
그걸로 동의 할 수 있습니다.
내가 동의하지 않는 부분은이 진술에 관한 것입니다.
대부분의 최종 사용자 용 응용 프로그램은 사용자 입력을 기다리는 데 대부분의 시간을 소비합니다.
자, 당신이 위아래로 점프하기 전에, 나는 그 진술에도 동의합니다! 그러나이 진술은 사용자가 실제로 시스템을 인식하는 방법을 충분히 이해하지 못하는 사람들이 간과하는 사실을 강조합니다.
사용자 는 응용 프로그램이로드 될 때까지 기다려야 할 때 응용 프로그램이 느리다는 것을 알 수 있습니다. 사용자 는 데이터를 입력하는 사이에 프로그램을 일시 중지해야 할 때이를 알 수 있습니다.
소프트웨어 성능은 시스템과 자연스럽고 유동적 인 상호 작용을 중단 할 때 분명합니다.
사용자는 시스템이 완벽하게 작동하고 사용자를 유지하지 않을 때만 시스템 성능을 알 수 없습니다.
일부 성능 향상은 성능으로 인식되지 않습니다. 고객은 단지 시스템이 더 "느껴진다"는 것을 알게 될 것입니다.
아편 한 자들은 양심보다 빠른 속도로 작동합니다. 우리의 두뇌는 즉각적인 피드백을 위해 프로그램되어 있으며 일련의 작업에 직면했을 때 우리는 그것들을 차례 차례 반복해야합니다. 피드백이 약간 일시 중지되면이 프로세스가 분리되어 스트레스 수준이 증가합니다. 피드백이 일시 중지되면 사람들은 버튼에 대해 생각하지 않고 자동으로 버튼을 두 번 클릭합니다.
고객이 직접 알아 차리지 못하는 성능 향상은 매우 적습니다. 기껏해야 그들은 사용에 약간 더 유창한 응용 프로그램 흐름을 가질 수 있지만 의식적으로 눈치 채기에는 충분하지 않습니다.
대부분의 최종 사용자 응용 프로그램은 입력을 처리하지 않고 사용자 입력을 기다리는 데 대부분의 시간을 소비합니다. 따라서 해당 버튼 클릭을 처리하고 화면을 업데이트하는 데 필요한 100ms를 10 % 할인 한 후에도 사용자는 업데이트 된 화면으로 다른 10000ms 동안 아무 작업도 수행하지 않을 것입니다.
sysadmin은 2 시간이 걸렸던 배치 작업이 90 분 안에 완료되는 것을 보지만, 결과를 기다려야하고 화가 났을 때 더 빠른 반품으로 인해 중간에 중단되는 것을 알 수 있습니다. 그의 영화를 통해 :)
나는 여기로 뛰어 들어가서 특별한 경우를 제공하고 싶었습니다 ....
* 고객의 고민은 모든 작은 변화에 대해 성능과주의 사항을 처리합니다! .
고객이 스스로 성능 측면에서 분석하는 경향이있는 프로덕션 렌더링을 다루는 것은 제 분야입니다. 부 버전에 비해 2 %의 성능 저하는 "버그 보고서"형식으로보고되는 속도 저하와 동일 할 수 있습니다.
포럼 스레드는 종종 고객이 개발자 자신보다 더 많은 벤치마킹을하는 다양한 버전의 소프트웨어에 대해 장면을 벤치마킹하는 고객으로 시작됩니다. "이 장면은 버전 X에서 렌더링하는 데 1 시간 40 분이 걸렸습니다. 이제 버전 Y에서는 32 분이 걸립니다."
"이 장면은 버전 X에서로드하는 데 18 분이 걸렸으며 이제는 버전 Y에서로드하는 데 4 분이 걸립니다."
최적화가 적용되면 매우 감사하며, 단독으로 매우 비싼 새 소프트웨어 업그레이드 구매를 보증하고 때로는 10 % 단축과 같은 약간의 개선만으로도 충분할 수 있습니다.
일부 더 큰 스튜디오에서는 하루 종일 렌더링하는 수백 대의 기계에 대해 비용을 지불해야하는 렌더 팜을 사용하고 여기에서 시간을 개선 할 수 있기 때문에 제품이 급증 할 때 고객에게 막대한 비용을 절약 할 수도 있습니다. 전체 제작 과정의 속도를 높입니다 (아티스트가 렌더링을 기다리지 않고보다 생산적인 예술을 만들면 더 나은 결과를 얻을 수도 있습니다).
따라서 고객이 실제로, 실제로 눈치 채는 분야는 개발자 자체보다 훨씬 더 많은 분야가 있으며 이는 처리량보다 대기 시간에 관한 UI 상호 작용 개념을 벗어난 것입니다.
청중이 동료 프로그래머가 아니라 관리자 및 고객 인 성능 분석을 "쓰기"하기 위해 프로그래머가 얼마나 많은 시간을 투자해야합니까?
우리의 경우 항상 거의 모든 부 릴리스가 있습니다. 속도는 최고의 판매 포인트 중 하나이며, 가장 기술적 인 벤치 마크 및 성능 분석조차도 실제로 고객과 관리자가 높이 평가하고 이해합니다. 고객에 대한 인식은 종종 울퉁불퉁 한 늑대와 같으며, 더 많은 최적화를 원하고, 개발자에게 잠재적으로 더 빠르게 진행하는 방법에 대한 제안을하려고합니다. 이 경우 실제로 일부 고객이 추가 최적화를 유지하고 유지 보수성 및 기능 향상과 같은 다른 메트릭에 초점을 맞추려는 충동에 저항하기 위해서는 훈련이 필요합니다.
청중이 동료 프로그래머가 아니라 관리자 및 고객 인 성능 분석을 "쓰기"하기 위해 프로그래머가 얼마나 많은 시간을 투자해야합니까?
나는 그것이 산업에 달려 있다고 믿는다. 엉뚱한 방위 계약의 세계에서, 우리는 이것을 상당히 자주합니다. 우리는 제품이 특정 방식으로 작동하도록하는 특정 요구 사항을 가지고 있으며 이러한 성능 지표는 항상 최종 사용자가 경험 한 것과 직접적으로 관련이있는 것은 아닙니다. 그리고 우리는 일반적으로 자체 테스트를 수행하여 제품의 바닥을 확인합니다. 두 가지 유형의 테스트 모두 그 의미에 대한 진지한 생각과 함께 보고서에 작성됩니다.
즉, 고객 및 배포 기반이 덜 전문적인 상황 (예 : 상업용 세계)에서는 이것이 사실인지 확실하지 않습니다. 성능 사양을 충족해야하는 COTS를 구매한다는 점을 감안할 때 일부 구매자는 이러한 성능 사양을 요구한다고 말할 수 있지만 실제로는 COTS 회사에 많은 성능 분석 백서가있는 것은 아닙니다. 유효한. 그것은 산업, 회사의 규모 및 경쟁의 성격에 달려있는 것 같습니다. 아 ... 자본주의.
내 의견은 성능 향상이 눈에 띄지 않으면 마케팅 할 수 없다는 것입니다. 다시 말해, 누군가 눈에 띄게 개선되지 않은 소프트웨어에 대해 더 많은 비용을 지불하는 이유는 무엇입니까?
눈에 띄지 않는 성능 향상이라는 마케팅 주장으로 인해 사용자는 일반적으로 그러한 주장에 가중치를 거의 미치지 않습니다. 예를 들어 분산 버전 제어를 사용하고 싶을 때 차이가 무시 될 수 있다고 생각했기 때문에 git 성능에 대한 주장을 무시했습니다. 그것은 그들이 inotify 지원과 결합했을 때 그들이 신뢰할 수 있음을 발견 한 것입니다.
최종 사용자 경험과 직접 관련이없는 성능 향상에 대한 예외를 만들 것입니다. 예를 들어, 최종 사용자가 차이를 느끼지 않더라도 서버 처리량은 서버를 구매하고 유지 관리하는 사람들에게 중요합니다. 이 경우 간단한 "X보다 개선 률"로 충분합니다.
Thread.Sleep(1000); //pretend this does more than change a 0 to a 1 in the database.