หากคุณกำลังทำงานในพื้นที่ที่มีความสำคัญต่อประสิทธิภาพอย่างแท้จริงคุณจะไม่สามารถทิ้งประสิทธิภาพไว้ได้ในภายหลัง เป็นหนึ่งในสิ่งที่สำคัญที่สุดที่ต้องคำนึงถึงเมื่อออกแบบในช่วงต้น ๆ ในกรณีเหล่านั้นและในรูปแบบที่เกี่ยวข้องกับการบำรุงรักษาของผลลัพธ์ที่ได้
คุณไม่สามารถออกแบบและใช้เซิร์ฟเวอร์ขนาดใหญ่ได้และเริ่มเขียนโค้ดที่ง่ายและมีเอกสารที่ใช้ฟังก์ชั่นการบล็อกสำหรับทุกสิ่งด้วยล็อกเธรดระดับโลกที่ล็อคระบบทั้งหมดเพื่อประมวลผลคำขอของลูกค้าแต่ละรายโดยไม่ต้องใส่อะไร คิดว่าอะไรก็ตามที่อยู่ในสถานะที่ใช้ร่วมกันความขัดแย้งของเธรดและความไม่แน่นอน นี่เป็นสูตรสำหรับภัยพิบัติและจำเป็นต้องออกแบบและเขียนรหัสจำนวนมากที่คุณเขียนด้วยวิธีที่อาจนำไปสู่ codebase ที่ยากต่อการบำรุงรักษาเท่าที่จะจินตนาการได้เกิดจากสภาพการแข่งขันและการหยุดชะงักเนื่องจากพยายาม เพื่อให้บรรลุถึงประสิทธิภาพที่จำเป็นในการเข้าใจถึงปัญหาหลังตรงข้ามกับการคิดเพียงเกี่ยวกับการออกแบบที่มีประสิทธิภาพเรียบง่ายและใช้งานได้ล่วงหน้า
ทีมพัฒนาเกม 8 เดือนแห่งการผลิตด้วยเอ็นจิ้นที่ไปเพียง 2 เฟรมต่อวินาทีบนฮาร์ดแวร์ที่น่ากินที่สุดด้วย 32 คอร์ในขณะที่มีแนวโน้มที่จะหยุดนิ่งเป็นเวลา 15 วินาทีทุกครั้งที่หน้าจอไม่ว่าง แก้ไขฮอตสปอตแปลเล็ก ๆ น้อย ๆ หนึ่ง โอกาสที่การออกแบบของพวกเขาคือ FUBAR ในรูปแบบที่รับประกันการกลับมาอีกครั้งของกระดานวาดภาพและการเปลี่ยนแปลงการออกแบบที่สามารถเรียงซ้อนลงในทุกมุมของโค้ดเบส
ด้วย John Carmack เขาได้พูดคุยเกี่ยวกับการสาธิตเทคโนโลยีว่าต้องทำงานที่ขั้นต่ำเป็นร้อยเป็นพันเฟรมต่อวินาทีเพื่อรวมเข้ากับการผลิต นั่นไม่ใช่ความหลงใหลที่ไม่ดีต่อสุขภาพอย่างมีประสิทธิภาพ เขารู้ล่วงหน้าว่าเกมต้องวิ่งอย่างเต็มที่ที่ 30+ FPS เพื่อให้ลูกค้าพบว่ายอมรับได้ ดังนั้นหนึ่งในแง่มุมเล็ก ๆ เช่นระบบแสงเงาจึงไม่สามารถทำงานที่ 30 FPS หรือเกมอื่น ๆ อาจไม่เร็วพอที่จะให้ผลตอบรับแบบเรียลไทม์ที่ต้องการ มันใช้ไม่ได้จนกว่าจะได้ประสิทธิภาพตามที่ต้องการ ในพื้นที่ที่มีความสำคัญต่อประสิทธิภาพซึ่งมีความต้องการพื้นฐานด้านประสิทธิภาพการแก้ปัญหาที่ล้มเหลวในการบรรลุความเร็วที่เพียงพอนั้นจริง ๆ แล้วไม่ดีไปกว่าสิ่งที่ไม่ได้ผลเลย. และคุณไม่สามารถออกแบบระบบ soft shadow ที่มีประสิทธิภาพซึ่งทำงานที่หลายร้อยถึงหลายพันเฟรมต่อวินาทีตามที่จำเป็นสำหรับเอ็นจิ้นเกมเรียลไทม์เว้นแต่ว่าคุณจะใส่ความคิดที่มีประสิทธิภาพไว้ล่วงหน้า ในความเป็นจริงในกรณีเช่นนี้ 90 +% ของงานมุ่งเน้นไปที่ประสิทธิภาพเนื่องจากเป็นเรื่องเล็กน้อยที่จะเกิดขึ้นกับระบบเงาที่ทำงานได้ดีเพียง 2 ชั่วโมงต่อเฟรมโดยใช้การติดตามเส้นทาง แต่คุณไม่สามารถคาดหวังว่าจะปรับได้ เพื่อทำงานที่หลายร้อยเฟรมต่อวินาทีโดยไม่มีการเปลี่ยนแปลงวิธีการที่แตกต่างกันโดยสิ้นเชิง
เมื่อประสิทธิภาพเป็นส่วนพื้นฐานของการออกแบบแอปพลิเคชันคุณไม่สามารถคาดหวังได้ว่าจะมีประสิทธิภาพในการเข้าใจถึงปัญหาย้อนหลังโดยไม่สูญเสียเวลามากขึ้นกว่าที่คุณบันทึกไว้โดยไม่สนใจเนื่องจากคุณไม่สามารถคาดหวังได้ว่า ไม่มีใครพูดว่า "ฉันไม่เป็นไรที่จะเลิกคิดเกี่ยวกับการออกแบบจนถึงภายหลังเพียงแค่บันทึกรหัสของคุณให้ดีและคุณสามารถออกแบบที่เหมาะสมในภายหลังได้" แต่ในสถาปัตยกรรมที่มีความสำคัญต่อประสิทธิภาพนั่นคือสิ่งที่คุณกำลังทำหากคุณไม่ใส่ใจและคิดมากกับการออกแบบที่มีประสิทธิภาพล่วงหน้า
ตอนนี้ไม่ได้หมายความว่าคุณต้องปรับการใช้งานของคุณให้เล็กลงทันที สำหรับรายละเอียดการติดตั้งมีจำนวนมากที่จะวนซ้ำไปสู่โซลูชันที่เร็วขึ้นหลังจากการวัดโดยที่การออกแบบไม่จำเป็นต้องเปลี่ยนและบ่อยครั้งเป็นวิธีที่มีประสิทธิผลที่สุดในการดำเนินการ แต่ในระดับการออกแบบหมายความว่าคุณต้องคิดอย่างเพียงพอว่าการออกแบบและสถาปัตยกรรมจะเกี่ยวข้องกับประสิทธิภาพได้อย่างไรตั้งแต่เริ่มต้น
ความแตกต่างที่สำคัญที่นี่คือการออกแบบ. มันไม่ใช่เรื่องง่ายที่จะทำการเปลี่ยนแปลงครั้งใหญ่ในการออกแบบด้วยการเข้าใจถึงปัญหาหลังการออกแบบสะสมการพึ่งพาและการพึ่งพาจะแตกถ้าการออกแบบเปลี่ยนแปลง และถ้าการออกแบบมีความต้องการที่มีประสิทธิภาพพอสมควรหรือในบางกรณีคุณภาพของมันถูกวัดโดยประสิทธิภาพของมันส่วนใหญ่คุณไม่ควรคาดหวังว่าจะสามารถบรรลุการออกแบบที่เหมาะสมได้ในภายหลัง ด้วยผลิตภัณฑ์ที่มีการแข่งขันใด ๆ ที่มีประสิทธิภาพเป็นส่วนใหญ่ของคุณภาพไม่ว่าจะเป็นระบบปฏิบัติการหรือคอมไพเลอร์หรือตัวประมวลผลวิดีโอหรือ raytracers หรือเครื่องมือเกมหรือเอนจินฟิสิกส์ความคิดเกี่ยวกับประสิทธิภาพและการแสดงข้อมูล และในกรณีเหล่านั้นมันไม่ใช่การปรับให้เหมาะสมก่อนวัยอันควรที่จะใช้ความคิดอย่างมีประสิทธิภาพล่วงหน้า มันวางความคิดเช่นนี้ในเวลาที่มีประสิทธิผลมากที่สุดที่จะทำ