Techniques to Optimise Multi-threaded Data Building During Game Development
Speaker notesDATA BUILDING SYSTEMS • Spectrum of possible designs ▪ No data building – use raw text, mesh, image files in game ▪ Full optimisation – use optimised custom formats • Usually somewhere in the are initialised - and running Putting data into global shared system - like object graph, ECS, or database Good for the game - makes processing files individually more difficult Speaker notesOPTIMISATION latest from cache Different people care about different data at different times Examples include Nav Mesh - or rendering data for global illumination ▶ Process everything in parallel Speaker notesASSUMPTIONS0 码力 | 99 页 | 2.40 MB | 5 月前3What's Eating my RAM?
Defragmentation .cpp MESH CppCon 2019: Emery Berger “Mesh: Automatically Compacting”Operating System malloc Defragmentation .cpp Buddy system MESH CppCon 2019: Emery Berger “Mesh: Automatically Compacting” under CC BY-SA 4.0Operating System malloc Defragmentation .cpp Buddy system MESH CppCon 2019: Emery Berger “Mesh: Automatically Compacting” Malloc Tunable Parameters jemalloc Source: Wikipedia -jemallocOperating System malloc Defragmentation .cpp Buddy system MESH local allocators CppCon 2019: Emery Berger “Mesh: Automatically Compacting” John Lakos “Local(Arena) memory allocators” -0 码力 | 88 页 | 3.49 MB | 5 月前3stdx::interval, a library for intervals on totally ordered sets
basic mathematical concept that appear in all kinds of algorithms, from recursive sorting to adaptive mesh refinement. Interval notation allows a more natural expression of the idea of an algorithm, replacing0 码力 | 1 页 | 45.14 KB | 5 月前3C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型
的稀疏体积,可以存储符号距 离场 (SDF) ,也可以存储烟雾仿真的结果 等。 • 据张心欣说, OpenVDB 赢得了奥斯卡奖 。 • 因为他经常用在影视特效中,主要是符号 距离场有时比 mesh 处理起来方便很多。 OpenVDB 的设计:如果用 SNode 来表示 • hash().pointer(5).pointer(4).dense(3) ZENO 中就大量使用了 OpenVDB0 码力 | 102 页 | 9.50 MB | 1 年前3Back to Basics: Move Semantics
dictionary_t dictionary; if (!db.is_open()) return dictionary_t(); // ... Fill in thousands of entries from database ... return dictionary; }6 David Olsen — Back to Basics: Move Semantics — CppCon 2020 #includedictionary_t dictionary; if (!db.is_open()) return dictionary_t(); // ... Fill in thousands of entries from database ... return dictionary; }7 David Olsen — Back to Basics: Move Semantics — CppCon 2020 #include dictionary_t dictionary; if (!db.is_open()) return dictionary_t(); // ... Fill in thousands of entries from database ... return dictionary; } void business_logic() { dictionary_t dictionary; dictionary = buil 0 码力 | 142 页 | 1.02 MB | 5 月前3Beyond Compilation Databases to Support C++ Modules: Build Databases
Can also be generated by ninja itself with ninja -t compdb ○ Other tools like bear can extract a database from a build via tracing ● Generally available at the same time as the build instructions (Makefile response files) ■ These files are referenced by but not necessarily present with the compilation database ○ Visibility of modules ■ Just because we have A.mod doesn’t mean anything can use it ● Might can be known by tooling 22Build Databases: Translation Units ● This is where existing compile database entries start showing up ○ Object (uniqueness constraint) ○ Source file ○ Work directory ○ Arguments0 码力 | 31 页 | 585.05 KB | 5 月前3C++20's
• How did we implement them in MSVC? • Part V: Time Zones • Overview of [time.zone] • IANA database challenges • Part VI: Conclusion7 Part I: Development Process8 Development Process • Implemented Time Zones ([time.zone]) • chrono now includes an interface for accessing the IANA time zone database. • This functionality requires several new types to be added to the library: • tzdb • tzdb_list 2:00 3:00 UTC America/ New York43 tzdb • This is a type that stores data from the time zone database. • Specifically, it contains data members: • string version; • vector0 码力 | 55 页 | 8.67 MB | 5 月前3C++20 镶 SQL
language v It matches the capabilities of a relational database v Very widely used. You will be able to find all sorts of information about itExample Database Customers id INTEGER PRIMARY KEY name TEXT JOIN customers ON customers.id = customerid WHERE price > ?;SQL Library Options u Traditional database library with strings u Domain specific language u Object Relational MappingTraditional Library Strings u What people think about first u Many of these are written by the database team itself u Allows full power of the database, may have extensions u Lots of information available u Vulnerable to sql0 码力 | 46 页 | 775.02 KB | 5 月前3Performance Matters
search. gle glegle gle gle gle found 8,000,000 similar images Take a picture Add it to the database Send results Find similar pictures Send it to Ogle The Prototype� � � � � found 8,000,000 ░░░░░░░░░░▓▓▌▐ ▌ ▐█▓░░░░░░░░░░░░░░░░░░░░░░░░░░██▐ ▌█▓▌░░░░░░░░░░░░░░░░░░░░░░░░░░░▓█▐Searching database... found 4 results: catisgumpy.bmp funisawful.bmp catdoesnotlikefun.bmp from_dad.bmp OGLE Speedup Results � � � �gle gle found 8,000,000 similar images Take a picture Add it to the database Send results Find similar pictures Send it to Ogle gle glegle gle found 8,000,000 similar0 码力 | 197 页 | 11.90 MB | 5 月前3Conan 2.0 Documentation
17 (continued from previous page) core.cache:storage_path: Absolute path where the packages and database are stored core.download:download_cache: Define path to a file download cache core.download:parallel: and perform the most typical operations, like installing a package, updating the package manager database or checking if a package is installed. By default, when you invoke them they will not try to install before installing them. If the parameter update is True it will try to update the package manager database before checking and installing. Its behaviour is affected by the value of tools.system. package_manager:mode0 码力 | 652 页 | 4.00 MB | 1 年前3
共 107 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11