欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

    Introduction to Data-Oriented Design.ppt

    • 资源ID:376647       资源大小:1.80MB        全文页数:28页
    • 资源格式: PPT        下载积分:2000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要2000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Introduction to Data-Oriented Design.ppt

    1、Introduction to Data-Oriented Design,So what is this Data-Oriented Design?,Its about on shifting focus to how data is read and written,Why should we care?,Performance,A read from memory takes 600 cycles at 3.2 GHz,A read from memory takes 40 cycles at 300 MHz,Performance,Disks (Blu-ray/DVD/HDD),Main

    2、 Memory,L2 Cache,L1 Cache,CPU / Registers,Latency,:(,600 cycles,40 cycles,1 2 cycles,Multithreading,Object,Read?,Write?,Object,update(),Object,Cannot multithread without knowing how data is touched Adding locks always protects data not code,Read?,Write?,Read?,Write?,Offloading to co-unit,?,SPU/GPU/A

    3、PU,?,If data is unknown hard/impossible to run on co-unit,Better design,Data focus can lead to isolated, self-contained, interchangeable pieces of data and code This can make it easier to test data and code in isolation,Example - OOD,class Bot .Vec3 m_position;.float m_mod;.float m_aimDirection;.voi

    4、d updateAim(Vec3 target)m_aimDirection = dot3(m_position, target) * m_mod; ,icache-miss,data-miss,Unused cached data,Very hard to optimize!,Example - OOD,void updateAim(Vec3 target) m_aimDirection = dot3(m_position, target) * m_mod; ,Lets say we call this code 4 times (4 diffrent Bots),iCache 600,m_

    5、position 600,m_mod - 600,aimDir 100,20 cycles,iCache 600,m_position 600,m_mod - 600,aimDir 100,iCache 600,m_position 600,m_mod - 600,aimDir 100,iCache 600,m_position 600,m_mod - 600,aimDir 100,7680,Example - DOD,Design ”back to front” and focus on the output data Then add the minimal amount of data

    6、needed to do the transform to create the correct output,Example - DOD,void updateAims(float* aimDir,const AimingData* aim,Vec3 target, uint count) for (uint i = 0; i positionsi,target) * aim-modi; ,Only read needed inputs,Write to linear array,Loop over all the data,Actual code unchanged,What has ch

    7、anged?,Code separated,Example - DOD,void updateAims(float* aimDir, const AimingData* aim, Vec3 target, uint count) for (uint i = 0; i positionsi, target) * aim-modi; ,iCache 600,positions 600,mod - 600,aimDir 100,20 cycles,1980,Data layout OOD vs DOD,pos0,mod0,aimDir0,pos0,Pos1,mod1,aimDir1,pos0,pos

    8、0,pos0,pos1,pos1,pos1,pos1,pos2,pos2,pos2,pos2,pos3,pos3,pos3,pos3,mod0,mod1,mod2,mod3,aimDir0,aimDir1,aimDir2,aimDir3,pos0,pos0,pos0,Each color block is one 128 byte cache line,Its all about memory,Optimize for data first then code Most code is likely bound by memory access Not everything needs to

    9、be an object,Remember,We are doing games, we know our data. Pre-format. Source data and native data doesnt need to be the same,Example: Area Triggers,position,position,position,position,next,position,position,position,position,next,position,position,position,position,next,Source data (Linked List),N

    10、ative Data (Array),position,position,position,position,position,position,position,position,position,position,position,position,position,position,count,Example: Culling System,Old System,New System (Linear arrays and brute force),3x faster, 1/5 code size, simpler,Data Oriented Design Delivers:,Better

    11、 Performance,Often simpler code,More parallelizable code,Questions?,Links,Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP) http:/ Practical Examples in Data Oriented Design http:/ The Latency Elephant http:/seven-degrees-of- Pitfalls of Object Oriented Programming ht

    12、tp:/seven-degrees-of- Insomniac R&D http:/ CellPerformance,Image credits,Cat image: http:/ photo by: Arinn capped and submitted by: Andy Playstation 3 and Playstation 2 Copyright to Sony Computer Entertainment Xbox 360 Image Copyright to Microsoft “WTF” Code quality image: Copyright by Thom Holwerda http:/


    注意事项

    本文(Introduction to Data-Oriented Design.ppt)为本站会员(eastlab115)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开