"Worth it"은 작성하고 읽고 유지하는 것이 얼마나 간단한 지, 사용자 에게 무언가를 훨씬 더 빠르게 반응하고 대화식으로 만드는 데 걸리는 시간 과 같은 컨텍스트가 필요합니다.
음료수 캔을 구입하기 위해 몇 페니를 저축하면 그 페니를 구하기 위해 먼 거리를 여행해야한다면, 특히 요즘 탄산 음료를 거의 마시지 않는다는 점을 고려할 때별로 좋지 않습니다. 백만 캔의 음료수를 구매할 때 캔당 몇 페니를 절약하는 것은 큰 일이 될 수 있습니다.
한편 두 사람이 내 옆에 있고 한 사람이 몇 동전을 똑같이 저렴하게 제공하고 다른 사람은 그렇지 않은 경우 약간의 돈을 절약하고 모자가 더 좋아서 더 비싼 것을 선택합니다. 어리석은 경우처럼 보입니다. 비관의.
내가 "마이크로 최적화"라고 부르는 사람들이 적용하는 것이 사소한 것이 아니라면 그러한 최적화를 고려해야 할 세 가지가 절대적으로 있어야 할 때, "미세 최적화"라고 부르는 사람들에게는 호기심없이 측정, 컨텍스트 및 사용자 엔드 토론이없는 것 같습니다. 나에게 적절한 마이크로 최적화는 요즘 메모리 레이아웃 및 액세스 패턴과 관련이 있으며 초점이 "마이크로"인 것처럼 보이지만 실제로는 마이크로가 아닙니다.
얼마 전까지 만해도 대량의 열 확산 스키닝을 위해 알고리즘 복잡도를 변경하지 않고 동일한 출력 (자동 테스트로 확보)을 사용하여 24 초에서 25 밀리 초 (약 960 배 더 빠름)로 작업을 줄일 수있었습니다. "마이크로 최적화"(가장 큰 것은 메모리 레이아웃이 약 2 초로 줄어든 메모리 레이아웃 변경에서 비롯된 것으로, 나머지는 SIMD 및 VTune의 캐시 미스에 대한 추가 분석 및 일부 메모리 레이아웃 재배 열과 같은 것들이었습니다).
Wolfire는 여기에서이 기술을 설명하고 필요한 시간으로 어려움을 겪었습니다.
http://blog.wolfire.com/2009/11/volumetric-heat-diffusion-skinning/
내 구현은 1 분 미만으로 낮추려고 애쓰는 동안 밀리 초 안에 그렇게 할 수있었습니다.
24 초에서 25ms로 "미세 최적화"한 후 워크 플로우의 게임 체인저였습니다. 이제 아티스트는 리그를 약간 변경할 때마다 24 초 동안 기다리지 않고 30FPS 이상에서 실시간으로 리그를 변경할 수 있습니다. 그리고 더 이상 진행률 표시 줄과 이런 종류의 것들이 필요하지 않았기 때문에 소프트웨어의 전체 디자인이 실제로 바뀌 었습니다. 따라서 모든 개선 사항이 알고리즘 복잡성에 대한 개선없이 이루어 졌다는 점에서 "마이크로 최적화"일 수도 있지만, 이전에는 고통스럽고 비 대화식 프로세스였던 것이 실제로 "매우 최적화"였습니다. 실시간 대화 형으로 사용자의 작업 방식을 완전히 바꿔 놓았습니다.
측정, 사용자 엔드 요구 사항, 컨텍스트
나는 Robert의 의견을 정말로 좋아했으며 아마도 내가 원하는 요점을 찾지 못했습니다.
글쎄 이런 종류의 변화가 "가치가 없다"고 주장하는 사람은 아무도 없습니다. 실질적인 혜택을 보여줄 수있었습니다. 많은 소위 미세 최적화는 불가능합니다.
이것은 종종 실시간 요구 사항이있는 매우 중요한 성능의 분야에서 일 하기는하지만, 나가야 할 마이크로 최적화를 고려할 때만 가능합니다.
그리고 측정뿐만 아니라 사용자 측도 강조합니다. 나는 현재 필드 (그리고 이전에는 gamedev)에 사용자 / 팬, 개발자 두 번째로 왔기 때문에 이상합니다. 그래서 나는 기술적 인 퍼즐을 푸는 것과 같은 프로그래머들을 흥분시키는 일반적인 것들에 결코 흥분하지 않았다. 나는 그들에게 부담이 있음을 알았지 만 다른 사용자와 공유 한 사용자 엔드 드림을 통해 그것들을 견뎌 낼 것입니다. 그러나 그것은 내가 무언가를 최적화하고 있는지 확인하는 데 도움이되었습니다. 실제 이익을 가진 사용자에게 실제로 영향을 미쳤습니다. 마이크로 최적화를 목표로 삼는 것이 나의 안전 장치입니다.
필자의 의견으로는 실제로 프로파일 러만큼이나 중요합니다. 큐브의 세분화를 10 억 개의 패싯으로 미세 최적화하는 것과 같은 일을하는 동료가 있었기 때문에 캐릭터 및 차량과 같은 실제 프로덕션 모델을 질식시키기 위해서였습니다. 그 결과는 "기술 데모"의미에서 인상적이지만 실제 사용자에게는 거의 쓸모가 없었습니다. 실제 사용 사례와 일치하지 않는 사례를 프로파일 링하고 측정하고 벤치마킹했기 때문입니다. 따라서 소프트웨어와 같은 소프트웨어를 생각하고 사용하는 법을 배우거나 그들과 협력하여 (이상적으로는 적어도 협력해야 함) 사용자에게 중요한 것을 먼저 이해하는 것이 매우 중요합니다.