마이크로 최적화-BAD 대 게임 개발


12

게임 개발에는 비즈니스 응용 프로그램 C #에 많은 C / C ++가 있습니다. C / C ++ 개발자가 한 줄의 코드가 어셈블리로 변환되는 방식에 대해 우려를 표명하는 것을 보았습니다. .NET에서 일부는 IL에 거의 들어 가지 않습니다.

C #에서 "마이크로 최적화"는 드문 경우이며 일반적으로 시간 낭비입니다. 게임 개발에서는 그렇지 않은 것 같습니다.

이 불일치를 구체적으로 만드는 것은 무엇입니까? 게임이 하드웨어의 한계를 끊임없이 뛰어 넘습니까? 그렇다면 하드웨어가 향상됨에 따라 더 높은 수준의 언어가 게임 산업을 인수 할 것으로 기대해야합니까?

게임 개발 언어로서 C #의 타당성에 대한 토론을 찾고 있지 않습니다. 나는 그것이 어느 정도 이루어 졌다는 것을 안다. 마이크로 최적화에 중점을 둡니다. 특히 Game Dev와 Applications dev의 차이점


게임으로 업데이트 현대적인 대규모 개발을 의미합니다. EG MMORPG, Xbox, PS3, Wii ...


3
나는 게임 개발자와 응용 프로그램 개발자로 일해 왔으며 그 차이는 미미합니다. 프로파일 링이없는 마이크로 최적화는 두 가지 모두에 집중되어 있습니다. 많은 게임에는 매우 강력한 요구 사항이 없으며 최적화가 필요하지 않습니다. 일부 비즈니스 응용 프로그램은 평균 60Hz 게임보다 훨씬 더 엄격한 요구 사항 (예 : 가동 시간 및 실시간 보장)이 필요합니다.
Dave Hillier

1
한 가지 추가 요소는 비즈니스 응용 프로그램에서 일반적으로 (이유 내에서) 하드웨어를 선택할 수 있다는 것입니다. 처리 능력이 더 필요한 경우 다른 서버를 구입하거나 AWS에서 더 많은 시간을 지불하면됩니다. 게임에서 최신 하드웨어를 요구하면 $ 60 게임이 $ 1,060 게임 및 비디오 카드로 바뀝니다. 콘솔을 개발하는 경우 하드웨어를 업그레이드하면 차세대를 기다리는 데 몇 년이 지연 될 수 있습니다. 더 나은 하드웨어를 얻을 수 없으면 더 잘 사용해야합니다.
Andrew

답변:


17

비즈니스 응용 프로그램에서 CPU가 항상 병목 현상이되는 것은 아닙니다. 비즈니스 응용 프로그램은 대부분의 시간을 기다리는 데 소비합니다. 예 :

  1. 데이터베이스 쿼리에서 결과를 기다리는 중
  2. 웹 요청이 완료되기를 기다리는 중
  3. 사용자가 UI 작업을 수행하기를 기다리는 중

따라서 처리 성능을 최적화하는 코드가 그다지 가치가없는 이유는 무엇입니까?

주요 고려 사항은 다음과 같습니다.

  1. 시장에 시간
  2. 단순성, 다른 사람이 코드를 이해하고 유지할 수 있습니까?

6
데이터베이스 쿼리를 최적화하는 코드가 비즈니스 응용 프로그램의 유용성을 크게 향상시킬 수 있다고 지적합니다.
HLGEM

4
+1. 데이터베이스 및 네트워크 최적화는 일반적으로 비즈니스 응용 프로그램에 많은 비용을 지불합니다. 예 : JSON과 XML 및 튜닝 DB 인덱스 선택
Shamit Verma

2
+1이지만 방정식의 다른 측면을 추가해야합니다. 마녀의 게임에서 "메인 루프 (들)"및 렌더링 (들)은 게임의 유동성으로 인해 각 마이크로 초의 가치 손실이 사라집니다. 눈과 다른 감각에.
Klaim

1
잘했다. 실제로 비즈니스 응용 프로그램과 게임 개발을 완료 한 후에는 복잡한 SQL 쿼리를 통해 더 많은 성능을 얻으려고 노력했습니다. 게임의 내부 루프를 다듬는 데 많은 시간을 보냈습니다.
Carson63000

모든 것이 조기 최적화로 돌아온다 는 것은 모든 악의 근원입니다 . 프로파일 링을 통해 일반 비즈니스 애플리케이션에서 소비하는 대부분의 시간이 네트워크 + 데이터베이스 IO임을 알 수 있습니다.
Alex Reinking

13

비즈니스 응용 프로그램에서는 마이크로 초가 중요하지 않습니다. 게임에서는 인생의 사실입니다.

초당 60 프레임으로 게임을 실행하려면 입력, 물리, 게임 플레이 로직, 오디오, 네트워킹, AI, 렌더링 등 프레임에 대해 수행해야하는 모든 작업을 수행하려면 ~ 16.67 밀리 초가 필요합니다. 운이 좋으면 30fps로 실행되며 고급스러운 33.3 밀리 초가됩니다. 프레임이 너무 오래 걸린다면, 당신의 리뷰는 플레이어가 담즙 인터넷 포럼을 채울 것입니다, 고통을 받고 (전문의 자존심에 타격을 언급하지 않기 위하여) 수만큼 많이 판매되지 않으며 있다면 정말 당신 불운 귀하의 팀이 생계를 위해 비즈니스 응용 프로그램을 코딩하는 것을 찾을 수 있습니다.

물론 게임 개발자는 경험과 괜찮은 프로파일 러를 통해 모든 라인에 대해 걱정하지 않아도됩니다. 다른 한편으로, 이러한 걱정은 때때로 비즈니스 세계에서 아마도 마이크로 최적화보다는 나노 최적화로 간주 될 수있는 것들에 영향을 줄 것입니다.

비교할 수 있고 예측 가능한 성능을 제공 할 때까지 고급 언어가 C ++을 사용하지 않을 것으로 기대하지 마십시오.


8
고주파 거래 애플리케이션에서 마이크로 초는 매우 중요합니다!
quant_dev

2
@quant : 로봇, 전력 그리드, 로켓, 의료 기술 등 대부분의 스트림 처리 응용 프로그램과 마찬가지로 백 로그를 너무 많이 쌓으면 따라 잡을 때까지 너무 늦을 수 있습니다.
Aaronaught

@quant_dev : 고주파 거래 애플리케이션 매우 드 rare니다.
molbdnilo

더 이상은 아닙니다. 회계 응용 프로그램보다는 드물지만 비행기 설계 소프트웨어보다 더 일반적입니다.
quant_dev

마이크로 초는 비즈니스 응용 프로그램에서도 중요합니다. 병목 현상은 대개 네트워크, 데이터베이스 또는 파일 시스템의 다른 곳에서 발견됩니다.
RubberDuck

9

자, C와 C ++ 개발자들이 개별 라인에 집착하는 것을 보았습니다. 나는 그들이 각각의 모든 라인에 집착하지 않을 것입니다.

최대 성능을 원하는 경우가 있으며 여기에는 많은 게임이 포함됩니다. 게임은 동일한 하드웨어에서 경쟁 제품보다 더 나은 모습을 보이기 위해 항상 성능 제한을 푸시하려고 시도했습니다. 이것은 모든 일반적인 최적화 기술을 적용한다는 것을 의미합니다. 알고리즘 및 데이터 구조로 시작하여 거기서 시작하십시오. 프로파일 러를 사용하면 시간이 가장 많이 걸리는 곳과 몇 줄의 미세 최적화를 통해 상당한 이익을 얻을 수있는 곳을 찾을 수 있습니다.

언어가 사람들을 강요하기 때문이 아니라 사람들이 원하는 것을 기반으로 언어를 선택하기 때문입니다. 프로그램에서 마지막 성능의 비트를 작성하려면 C #을 작성하지 않고 CLR로 컴파일하지 않고 JIT 컴파일러 (또는 기타)가 잘 작동하기를 희망하며 크게 제어 할 수있는 곳에 작성하십시오 출력. C 또는 C ++ (및 아마도 C ++의 제한된 하위 집합)을 사용하고 어셈블리 언어 출력 및 프로파일 러 결과를 연구합니다.

C와 C ++를 사용하는 많은 사람들이 있으며, 충분히 빠르다면 번역의 세부 사항에 대해 너무 걱정하지 않아도됩니다.


7

게임이 하드웨어의 한계를 끊임없이 뛰어 넘습니까?

예, 그렇습니다.

그렇다면 하드웨어가 향상됨에 따라 더 높은 수준의 언어가 게임 산업을 인수 할 것으로 기대해야합니까?

실제로는 아닙니다. 하드웨어가 향상됨에 따라 소비자도 게임이 향상되기를 기대하기 때문입니다. 개발자는 더 높은 수준의 언어를 사용했기 때문에 동일한 품질의 게임이 더 효율적으로 개발 될 것으로 기대하지는 않습니다. 그들은 모든 새로운 플랫폼으로 양말을 날릴 것으로 기대합니다.

물론 약간의 움직임이 있습니다. 내가 젊은이 였고 처음으로 게임 개발에 관심이 있었을 때, 그것은 손으로 쓰는 어셈블리 였거나 지옥을 꺼내는 것이었다. 이것은 코모도어 64 시대였습니다. 요즘 C ++은 대부분의 게임 개발 에서 사용 되는 언어 입니다. 실제로 엔진 코드에는 C ++를 사용하고 게임 로직 코드에는 고급 스크립팅 언어를 사용하는 방향으로 나아가는 움직임을 보았습니다. 예를 들어 LUA 또는 언리얼 엔진에는 자체 언리얼 스크립트 언어가 있습니다.


1
요즘 게임 개발자의 좋은 부분은 다른 사람이 작성한 최적화 된 엔진 레이어를 사용하고 파이썬이나 덜 세심한 C ++을 사용하여 물건을 묶습니다.
Morgan Herlocker

언리얼 엔진은 이제 스크립팅을 "뒤로"언리얼 스크립트에서 C ++로 옮겼습니다. 현대 C ++의 경우 마이크로 최적화 된 낮은 대기 시간 코드와 간결한 고수준 논리를 모두 작성할 수 있다는 점이 좋습니다. 대부분의 다른 언어는 대기 시간과 종종 성능을 희생하여 높은 수준을 달성합니다.
leftaroundabout

7

C #에서 "마이크로 최적화"는 드문 경우이며 일반적으로 시간 낭비입니다. 게임 개발에서는 그렇지 않은 것 같습니다.

높은 수준의 코드 및 라이브러리 코드로 응용 프로그램을 조립할 수 있다면 시간 낭비입니다. 이 경우 원하는 경우 해석 언어로 작성하십시오. 큰 차이가 없습니다. CryEngine 3 처럼 실시간으로 동적 장면 컨텐츠를 실시간으로 보 셀화하는 최첨단 글로벌 일루미네이션 엔진을 구현하려는 경우 자연스럽게 마이크로 최적화의 필요성을 벗어날 수 없습니다.


0

"게임"은 포괄적 인 용어입니다. 예를 들어 MMORPG가 있다면 최적화가 적을수록 많은 플레이어에게 영향을 미칩니다.

게이머는 아마도 한 번에 비교적 많은 양의 일이 실시간으로 익숙해 졌을 것입니다. 확실한; 한 번에, Pacman 또는 Tetris가 반응하는 것이 목표였습니다. 그러나 여전히 반응이 좋았습니다. 어쨌든 패킷 삭제 네트워크 연결을 통한 3DMMORPG.

나는 최적화하고 싶다는 것을 확실히 이해한다.


0

게임은 지속적으로 방대한 양의 백그라운드 처리를 수행합니다. 비즈니스 앱은 그렇지 않습니다.


4
많은 비즈니스 앱을하지 않습니까?
올바른 의견

2
비즈니스 앱이 초당 60 회 상태를 업데이트 할 필요가 없음을 충분히 알고 있습니다. 또한 나는 구체적으로 "일관되게"말했다.
user16764

2
실시간 거래에 대해 들어 본 적이 있습니까?
내 올바른 의견

0

나는 항상 "미세 최적화"라는 용어가 다소 모호하다는 것을 알았습니다. 메모리 레이아웃 및 액세스 패턴에 대한 일부 명령어 수준의 변경이 알고리즘 복잡성을 줄이지 않고 핫스팟을 측정하는 전문 기술자로부터 80 배 빠른 결과를 얻는다면 "미세 최적화"입니까? 저에게는 이것이 실제 사용 사례에서 80 배 더 빠른 것을 만드는 "매우 최적화"입니다. 사람들은 그러한 최적화가 미세한 영향을 미치는 것과 같은 것들에 대해 이야기하는 경향이 있습니다.

나는 더 이상 gamedev에서 일하고 있지 않지만 경로 추적과 같은 영역에서 VFX에서 일하고 있으며 복잡한 장면에서 초당 약 5 천만 광선을 처리하는 BVH 및 KD 트리의 많은 구현을 보았습니다. 다중 스레드 평가). 대략 말하면, 다중 스레드 평가에서도 백만 광선 / 초 미만의 광선 추적 컨텍스트에서 BVH를 간단하게 구현하는 경향이 있습니다. Embree를 제외하고는 같은 하드웨어에서 동일한 장면에서 1 억 개 이상의 광선을 처리 할 수있는 BVH가 있습니다.

이는 전적으로 Embree가 200 배 더 빠른 "미세 최적화"(동일한 알고리즘 및 데이터 구조) 때문입니다. 물론 훨씬 더 빠른 이유는 인텔의 개발자가 프로파일 러와 측정에 의존하는 전문가이기 때문입니다. 중요한 부분을 조정했습니다. 그들은 코드를 변경하지 않았고 유지 보수성을 크게 저하시키는 비용으로 0.000000001 % 개선 된 변경 사항을 커밋하지 않았습니다. 이것들은 신중한 손에 적용되는 매우 정확한 최적화였습니다. 초점면에서는 미세하지만 효과면에서는 거시적 일 수 있습니다.

게임 엔진으로 작업하는 상위 수준 또는 하위 수준에 따라 게임의 실시간 프레임 속도 요구 사항이 자연 스럽습니다 (UE 4로 만든 게임조차도 종종 고급 스크립트에서 적어도 부분적으로 구현 됨 (물리 엔진의 가장 중요한 부분은 아니지만) 미세 최적화는 특정 영역에서 실제 요구 사항이됩니다.

매일 우리를 둘러싸고있는 또 하나의 매우 기본적인 영역은 고해상도 이미지를 실시간으로 흐리게 처리하고 어쩌면 우리가 어딘가에서 보았던 전환의 일환으로 OS 효과와 같은 다른 효과를 수행하는 것과 같은 이미지 처리입니다. 이미지의 모든 픽셀을 처음부터 반복하여 이러한 이미지 작업을 구현할 필요는 없으며 일치하는 프레임 속도에서 이러한 실시간 결과를 기대할 수 있습니다. CPU 인 경우 일반적으로 SIMD와 일부 미세 조정을보고 있거나 효과적으로 작성하려면 마이크로 수준의 사고 방식이 필요한 GPU 쉐이더를보고 있습니다.

그렇다면 하드웨어가 향상됨에 따라 더 높은 수준의 언어가 게임 산업을 인수 할 것으로 기대해야합니까?

하드웨어가 발전함에 따라 지침과 기술 (예 : GPU의 물리학), 기술, 고객이보고 싶은 것에 대한 고객의 기대, 경쟁에서 웹 개발자가 이제 WebGL에서 저수준 GLSL 셰이더를 작성하는 경우에도 개발자가 저수준으로 다시가는 방법 (이 특정 종류의 웹 개발은 10 년 또는 2 년 전보다 훨씬 낮은 수준임) GLSL은 매우 저수준의 C와 같은 언어이므로 일부 웹 개발자는 저수준 GPU 쉐이더 작성을 받아 들일 것이라고 생각한 적이 있습니다.

성능이 중요한 영역을보다 높은 수준의 언어로 전환 할 수있는 방법이 있다면 필자가 볼 수있는 소프트웨어와 컴파일러 및 도구에서 더 많은 것을 가져와야합니다. 가까운 미래에 나에게 문제는 하드웨어가 충분히 강력하지 않다는 것입니다. 그것은 우리의 언어로 다시 돌아 가지 않고 변화하고 발전 할 때마다 가장 효과적으로 대화 할 수있는 방법을 찾지 못하는 방법과 더 관련이 있습니다. 가상 하드웨어가 변화하는 속도는 빠른 속도입니다. 왜냐하면 가상 하드웨어가 다음 수십 년 동안 파란 색으로 진전을 멈추었 기 때문입니다.

유감스럽게도 요즘에는 성능이 중요한 영역에서 일할 때 Borland Turbo C DOS 시대에 시작했지만 시작보다 다소 저수준으로 생각해야합니다. 당시에는 CPU 캐시가 거의 존재하지 않았기 때문입니다. 주로 DRAM과 레지스터 였기 때문에 알고리즘 복잡성에 더 집중하고 성능에 큰 영향을 미치지 않고 트리와 같은 링크 된 구조를 매우 간단하게 작성할 수있었습니다. 요즘 CPU 캐시의 하위 수준 세부 사항은 알고리즘 자체만큼이나 내 생각을 지배합니다. 마찬가지로 멀티 스레딩 및 원자 및 뮤텍스, 스레드 안전 및 동시 데이터 구조 등을 생각 해야하는 멀티 코어 머신도 있습니다. 내가 시작했을 때보 다 인간적으로 직관적이지 않습니다.

이상하게도 그것은 지금 나에게 매우 진실 해 보인다. 나는 30 년 전보다 오늘날 하드웨어의 기본 및 저수준 복잡성과 세부 사항에 더 많은 영향을 받고 향수 안경을 벗기 위해 최선을 다하고 있다고 생각합니다. 물론 우리는 여기서 약간의 어셈블리에 대해 이야기하고 XMS / EMS와 같은 까다로운 세부 사항을 처리해야 할 수도 있습니다. 그러나 대부분의 경우 필자는 성능이 중요한 영역에서 작업 할 때 오늘날보다 복잡성과 하드웨어 및 컴파일러 인식이 덜 필요하다고 말했습니다. 우리가 글쓰기처럼 제쳐두면 업계 전체에서 거의 사실로 보입니다.if/else 좀 더 사람이 읽을 수있는 방식으로 진술하고 요즘 일반적인 사람들이 하드웨어의 하위 수준 세부 사항 (여러 코어에서 GPU, SIMD, CPU 캐시 및 컴파일러 / 통역사 / 도서관은 작동합니다).

높은 수준! = 덜 효율적

이 질문으로 돌아 가기 :

그렇다면 하드웨어가 향상됨에 따라 더 높은 수준의 언어가 게임 산업을 인수 할 것으로 기대해야합니까?

나에게 그것은 하드웨어에 관한 것이 아닙니다. 최적화 도구와 도구에 관한 것입니다. 내가 시작했을 때 사람들은 실제로 모든 콘솔 게임을 어셈블리로 작성했으며, 특히 6502를 생성하는 고품질 컴파일러가 없기 때문에 진정한 성능 이점이있었습니다.

C 컴파일러 최적화가 최적화에서 더 똑똑 해짐에 따라 C로 작성된 고급 코드가 다른 분야에서 최고의 어셈블리 전문가가 작성한 코드를 능가하는 수준에 도달하기 시작했습니다 (항상 그런 것은 아님). 그것은 게임을위한 최소한의 코딩을 위해 C를 채택하는 것은 쉬운 일이 아니 었습니다. 그리고 C ++에서도 비슷한 변화가 점차 발생했습니다. 어셈블리에서 C 로의 생산성 향상은 C에서 C ++로가는 것이 아니라 ASM에서 완전히 사소한 게임을 작성하는 게임 개발자의 만장일치 동의에 도달 할 수 있다고 생각했기 때문에 C ++ 채택이 느려졌습니다.

그러나 이러한 변화는 이러한 언어에 대한 옵티마이 저가 크게 (낮은 것은 아니지만 항상 모호한 경우가 있지만) 더 이상 사용되지 않도록 하드웨어가 더 강력 해지지는 않았습니다.

멀티 스레딩이나 GPU, 캐시 미스 또는 그와 같은 것 (특정 데이터 구조는 아닐 수도 있음)에 대한 염려없이 상상할 수있는 최상위 코드로 코드를 작성할 수있는 가상 시나리오를 상상할 수 있다면 옵티마이 저는 인공 지능과 같습니다. 스마트하고 가장 효율적인 메모리 레이아웃을 파악하여 데이터를 정리하고 압축하고, 여기저기서 GPU를 사용할 수 있고, 여기저기서 일부 코드를 병렬화하고, SIMD를 사용하고, 프로파일 링하고 IR을 계속 최적화 할 수 있습니다. 프로파일 러 핫스팟에 응답하면 세계 최고의 전문가를 능가하는 방식으로 성능이 가장 중요한 분야에서 일하는 사람들조차도 그것을 채택하는 것은 쉬운 일이 아닙니다 ... 그리고 그것은 진보입니다. 더 빠른 하드웨어가 아니라 엄청나게 똑똑한 옵티 마이저에서 나옵니다.


0

C #에서 "마이크로 최적화"는 드문 경우이며 일반적으로 시간 낭비입니다. 게임 개발에서는 그렇지 않은 것 같습니다.

여기에 용어 문제가 있습니다. 단어를 올바르게 사용하고 있지만 게임 개발자와 비즈니스 사람들은 서로 다른 두 가지 방식으로 동일한 용어를 사용하고 있습니다.

비즈니스의 경우 "미세 최적화"는 소프트웨어로 구현 된 전체 비즈니스 프로세스에서 매우 작은 단계를 가속화하는 것을 의미합니다. 눈살을 찌푸린 이유는 일반적으로 다음 중 하나입니다.

  1. 몇 초 빠른 속도로 동일한 비즈니스 가치를 제공하는 데 추가 비용이 소요되었습니다. 속도 향상으로 절약 된 돈은 다른 돈의 풀 (사용자 시간)에서 나옵니다. 따라서 비즈니스는 일반적으로 지출 한 노력으로부터 이익을 얻지 못하고, 클라이언트는 비즈니스를 희생합니다.
  2. 일반적으로 비즈니스 프로그래머는 전체 비즈니스 프로세스에서 가시성이 떨어 지므로 단일 단계를 최적화하면 전체 프로세스에 좋은 이점을 얻지 못할 수 있습니다. 예를 들어, 프로세스의 3 %를 10 배 빠르게 만들면 전체 프로세스가 2.7 % 증가했습니다.
  3. 일반적으로 비즈니스에는 일부 비즈니스 가치가있는 나머지 남은 작업 목록이 많으며 (아마도) 더 짧은 시간에 동일한 가치를 제공하는 대신 해당 가치를 추가하는 것이 우선 순위가 높습니다.

게임 개발은 다른 짐승입니다. "마이크로 최적화"는 기능이나 루틴에서 적은 시간을 절약합니다.

  1. 게임 시스템은 렌더링주기를 유지하는 경향이 있습니다. 현재 황금 표준은 초당 60 프레임이므로 계산할 모든 항목을 1/60 초 단위로 화면에 렌더링해야합니다.
  2. 이것은 종종 게임 과정에서 동일한 루틴을 수천에서 수십만 번이라고 부릅니다. 따라서 단일 기능의 10 배 개선은 개선의 이점이 느껴지는 횟수만큼 가치가 확대됩니다.
  3. 렌더링 속도를 달성하지 못하면 게임 프리젠 테이션에 영향을 미칩니다. 비디오가 고르지 않게되고, 캐릭터가 유동적 인 움직임 대신 스킵과 점프로 애니메이션됩니다. 이것은 플레이어를 게임 몰입에서 빠져 나와 게임의 가치에 의문을 제기하는 영역으로 즉시 가져옵니다.

따라서 비즈니스에서는 4 단계 비즈니스 프로세스의 형태가 0.6 초 또는 0.5 초로 나타나는지 아무도 신경 쓰지 않습니다. 게임을하는 동안 200ms가 걸리는 루틴을 100ms로 줄일 수 있는지주의를 기울입니다.

그것은 고객에게 제공되는 가치, 고객의 요구 및 변화의 비용-이익 비율에 관한 것입니다.


-1

특정 작업에 해당 도구가 선택된 이유와 관련이 있습니다.

골퍼들은 드라이버를 사용할 때 그리 많지 않은 퍼터로 방향과 힘을가합니다.

왜? 그들은 다른 종류의 샷이기 때문에. 드라이브의 경우 최대 거리의 페어웨이에 드라이브를 설치하려고합니다. 퍼팅의 경우 구멍에 정확하게 넣고 싶습니다.

여기에도 동일하게 적용됩니다. 게임 개발자는 다른 작업의 성능을 제어 할 수있는 C ++을 선택합니다. 당신이 그것을 선택했다면, 그것을 활용하고 싶을 것입니다.


-3

대부분의 비즈니스 응용 프로그램은 사내 도구로 작성되었습니다. 이 도구의 유용성에 대한 기대는 대량 고객에게 판매 된 소프트웨어의 경우보다 훨씬 낮습니다. 사내 비즈니스 앱에는 마우스 클릭에 느리게 반응하는 메뉴와 대화 상자, 지연으로 다시 그려지는 창 또는 Swing (공포!)으로 작성된 GUI가있는 것이 일반적입니다. 이것은 여러 가지 이유로 인해 (소프트웨어가 매우 "빠른"것보다 사용자 정의 할 수있는 것이 더 중요합니다. 소프트웨어 사용자는 문제의 소프트웨어를 사용할지 여부를 선택할 수 없습니다. 소프트웨어 설치 결정은 자체적으로 사용하지 마십시오 ...). 이 모든 것의 결과는이 도구의 개발자가 애플리케이션의 응답 성을 최적화하는 데 많은 시간을 소비하지 않는다는 것입니다. 확장 성과 기능 수에 대해서는 많은주의를 기울여야합니다. 다른 고객 기반 => 다른 디자인 목표 => 다른 방법론.

Excel과 같은 대중을 대상으로하는 비즈니스 응용 프로그램은 매우 최적화되어 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.