 Data Structures That Make Video Games Go RoundPhotorealistic, Physics based. ● Multi-threaded. ● Made with a game engine. ● Long development cycles. ● Large, complex codebases.But the structure of a game is *roughly the same*Renderer Start End 6 7 1 2 3 4 No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid No cycles!Directed Acyclic Graph No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid Cycles!!! No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid Invalid Cycles!!! No cycles!Sorting0 码力 | 196 页 | 3.03 MB | 6 月前3 Data Structures That Make Video Games Go RoundPhotorealistic, Physics based. ● Multi-threaded. ● Made with a game engine. ● Long development cycles. ● Large, complex codebases.But the structure of a game is *roughly the same*Renderer Start End 6 7 1 2 3 4 No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid No cycles!Directed Acyclic Graph No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid Cycles!!! No cycles!Directed Acyclic Graph (DAG) 1 2 3 4 5 6 7 1 2 3 4 Valid Invalid Cycles!!! No cycles!Sorting0 码力 | 196 页 | 3.03 MB | 6 月前3
 TiDB 2.1.7cycle de- tection.1 The monotonic test finds dependency cycles over increment-only registers, the txn-cycle test finds write-read dependency cycles over read-write registers, and the append test uses appends and 3.0.0-beta.1 exhibited frequent cases of read skew (G-single, A5A) and other anti-dependency cycles (G2, G2-item), due to a retry mechanism which ignored transactional boundaries. Writes could also We appended both 4 and 7 to key 7, but one 3The same test also contains numerous anti-dependency cycles involving read dependencies (T2 reads state which T1 wrote), instead of write dependencies. 4This0 码力 | 9 页 | 141.29 KB | 6 月前3 TiDB 2.1.7cycle de- tection.1 The monotonic test finds dependency cycles over increment-only registers, the txn-cycle test finds write-read dependency cycles over read-write registers, and the append test uses appends and 3.0.0-beta.1 exhibited frequent cases of read skew (G-single, A5A) and other anti-dependency cycles (G2, G2-item), due to a retry mechanism which ignored transactional boundaries. Writes could also We appended both 4 and 7 to key 7, but one 3The same test also contains numerous anti-dependency cycles involving read dependencies (T2 reads state which T1 wrote), instead of write dependencies. 4This0 码力 | 9 页 | 141.29 KB | 6 月前3
 Blazing Trails: Building the World's Fastest CameBoy Emulator in Modern C++executing instructions. Each instruction takes a specific number of M-cycles, with each M-cycle typically equating to 4 T-cycles. 21T-Cycle vs M-Cycle • T-Cycle: Tick Cycle (also called Machine Cycle executing instructions. Each instruction takes a specific number of M-cycles, with each M-cycle typically equating to 4 T-cycles. 22A toy example… Let’s pick a simple game and just implement that…0 码力 | 91 页 | 8.37 MB | 6 月前3 Blazing Trails: Building the World's Fastest CameBoy Emulator in Modern C++executing instructions. Each instruction takes a specific number of M-cycles, with each M-cycle typically equating to 4 T-cycles. 21T-Cycle vs M-Cycle • T-Cycle: Tick Cycle (also called Machine Cycle executing instructions. Each instruction takes a specific number of M-cycles, with each M-cycle typically equating to 4 T-cycles. 22A toy example… Let’s pick a simple game and just implement that…0 码力 | 91 页 | 8.37 MB | 6 月前3
 MITRE Defense Agile Acquisition Guide - Mar 2014throughout the entire process in order to plan and integrate multiple releases, oversee development cycles, manage evolving requirements, facilitate collaboration, and obtain committed, active, and consistent environment must facilitate close collaboration across multiple disciplines to support rapid development cycles. A successful Agile framework depends on active support from multiple stakeholder communities, including often has more predictable requirements that may allow for a fixed-price contract. Long development cycles involve greater unknowns and may require a more flexible contract type. The political environment0 码力 | 74 页 | 3.57 MB | 5 月前3 MITRE Defense Agile Acquisition Guide - Mar 2014throughout the entire process in order to plan and integrate multiple releases, oversee development cycles, manage evolving requirements, facilitate collaboration, and obtain committed, active, and consistent environment must facilitate close collaboration across multiple disciplines to support rapid development cycles. A successful Agile framework depends on active support from multiple stakeholder communities, including often has more predictable requirements that may allow for a fixed-price contract. Long development cycles involve greater unknowns and may require a more flexible contract type. The political environment0 码力 | 74 页 | 3.57 MB | 5 月前3
 Continuous Regression Testing for Safer and Faster Refactoringloops Fast feedback cycles boost development con�dence and productivity. Moving high-level tests out of the developer loop results in slow and inef�cient application life- cycles.16 Aurora Innovation Continuously: Measure developer experience and productivity. Monitor changes to developer feedback cycles. Track the effectiveness of existing testing practices. Extract real-time insights about software Trustworthy The self-driving enterprise is trustworthy.79 Aurora Innovation Conclusion Fast feedback cycles improve developer experience and boost productivity. Continuous regression testing facilitates changing0 码力 | 85 页 | 11.66 MB | 6 月前3 Continuous Regression Testing for Safer and Faster Refactoringloops Fast feedback cycles boost development con�dence and productivity. Moving high-level tests out of the developer loop results in slow and inef�cient application life- cycles.16 Aurora Innovation Continuously: Measure developer experience and productivity. Monitor changes to developer feedback cycles. Track the effectiveness of existing testing practices. Extract real-time insights about software Trustworthy The self-driving enterprise is trustworthy.79 Aurora Innovation Conclusion Fast feedback cycles improve developer experience and boost productivity. Continuous regression testing facilitates changing0 码力 | 85 页 | 11.66 MB | 6 月前3
 Deciphering C++ Coroutinesmay still consume CPU cycles!19/55 Threads - Evaluation Thread creation is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be synchronized correctly. ...19/55 Threads - Evaluation Thread creation is is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be synchronized correctly. ... Not a solution that scales well. Can be a good0 码力 | 156 页 | 1.79 MB | 6 月前3 Deciphering C++ Coroutinesmay still consume CPU cycles!19/55 Threads - Evaluation Thread creation is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be synchronized correctly. ...19/55 Threads - Evaluation Thread creation is is CPU and memory intensive Thread switching is expensive Blocked threads may still consume CPU cycles! Shared data must be synchronized correctly. ... Not a solution that scales well. Can be a good0 码力 | 156 页 | 1.79 MB | 6 月前3
 To Int or to Uint, This is the Questionlinkedin.com/in/alexdathskovsky •The number of cycles it takes to compute an instruction •Errors, misalignment, and cache misses might increase the cycles count •NAN’s and INFS do not increase the cyclesWHAT dathskovsky@speedata.io | www.linkedin.com/in/alexdathskovsky •ADD – 1 cycle (not piped) •IMUL – 3 cycles •DIV – at least x20 time slower than imul (depending on the architecture)WHAT IS LATENCY: PIPES0 码力 | 102 页 | 3.64 MB | 6 月前3 To Int or to Uint, This is the Questionlinkedin.com/in/alexdathskovsky •The number of cycles it takes to compute an instruction •Errors, misalignment, and cache misses might increase the cycles count •NAN’s and INFS do not increase the cyclesWHAT dathskovsky@speedata.io | www.linkedin.com/in/alexdathskovsky •ADD – 1 cycle (not piped) •IMUL – 3 cycles •DIV – at least x20 time slower than imul (depending on the architecture)WHAT IS LATENCY: PIPES0 码力 | 102 页 | 3.64 MB | 6 月前3
 Reflection Based Libraries to Look Forward Tothe capabilities of reflection (P2996). Requires recursively computing the hash of types. Avoid cycles! Requires a compile time hashing function. Requires full visibility into the class’ data layout hashing - Size of the struct 71ABI hashing - Avoiding cycles 72And just for fun, same code with type based code 73ABI hashing - Avoiding cycles 74Compatibility of data layout across processes, without0 码力 | 118 页 | 14.33 MB | 6 月前3 Reflection Based Libraries to Look Forward Tothe capabilities of reflection (P2996). Requires recursively computing the hash of types. Avoid cycles! Requires a compile time hashing function. Requires full visibility into the class’ data layout hashing - Size of the struct 71ABI hashing - Avoiding cycles 72And just for fun, same code with type based code 73ABI hashing - Avoiding cycles 74Compatibility of data layout across processes, without0 码力 | 118 页 | 14.33 MB | 6 月前3
 THE NETWORKINGTS FROM SCRATCH: IO Objectstarget could be any type Target could own the I/O object creating a cycle 18Breaking the Cycle Cycles could be deemed to be initiating function contract violation (Restinio takes this approach) Completion Networking TS from scratch Completion handlers must be stored in a Service to avoid ownership cycles Outstanding work must be tracked to ensure underlying ExecutionContext still available upon completion0 码力 | 35 页 | 900.82 KB | 6 月前3 THE NETWORKINGTS FROM SCRATCH: IO Objectstarget could be any type Target could own the I/O object creating a cycle 18Breaking the Cycle Cycles could be deemed to be initiating function contract violation (Restinio takes this approach) Completion Networking TS from scratch Completion handlers must be stored in a Service to avoid ownership cycles Outstanding work must be tracked to ensure underlying ExecutionContext still available upon completion0 码力 | 35 页 | 900.82 KB | 6 月前3
 The DevOps Handbookand refactor and improve problematic areas of our code and environments—we do this by reserving cycles in each development interval, or by scheduling kaizen blitzes, which are periods when engineers startup, strive to generate measurable improvement or actionable data within weeks f. RESERVE 20% OF CYCLES FOR NON-FUNCTIONAL REQUIREMENTS AND REDUCING TECHNICAL DEBT i. Don’t just make the interest payments0 码力 | 8 页 | 22.57 KB | 5 月前3 The DevOps Handbookand refactor and improve problematic areas of our code and environments—we do this by reserving cycles in each development interval, or by scheduling kaizen blitzes, which are periods when engineers startup, strive to generate measurable improvement or actionable data within weeks f. RESERVE 20% OF CYCLES FOR NON-FUNCTIONAL REQUIREMENTS AND REDUCING TECHNICAL DEBT i. Don’t just make the interest payments0 码力 | 8 页 | 22.57 KB | 5 月前3
共 101 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
相关搜索词
 DataStructuresThatMakeVideoGamesGoRoundTiDB2.1BlazingTrailsBuildingtheWorldFastestCameBoyEmulatorinModernC++MITREDefenseAgileAcquisitionGuideMar2014ContinuousRegressionTestingforSaferandFasterRefactoringDecipheringCoroutinesToIntortoUintThisisQuestionReflectionBasedLibrariesLookForwardTHENETWORKINGTSFROMSCRATCHIOObjectsTheDevOpsHandbook














 
 