负责Unity绘图引擎架构与发展的元老工程师Aras Pranckevičius,在个人部落格发表不看好C++ 20新功能Ranges的文章,而其在推特上的贴文也引来许多游戏开发工程师表达相同的感受。他提到,C++的编译时间与侦错建置(Debug Build)效能非常重要,但是C++ 20的新功能Ranges却让这两者都大幅增加。
11月ISO C++委员会在圣地亚哥召开了有史以来最大规模的会议,就C++ 20的语言更新草案进行讨论,而决议之一便是决定加入Ranges概念。Ranges是即将在C++ 20加入的新语法功能,Ranges用来帮助操作范围概念,能够让开发者简单的迭代具有开始和结束范围,并回传行为类似迭代器的物件。Ranges能够让语法更为简洁,使程式码阅读者不再需要自己解析复杂的for循环逻辑。
而主推Ranges和Concepts进入标准函式库的Eric Nieble,在自己的部落格发表标题为Standard Ranges的文章,然而却在Aras Pranckevičius发表评论之后,引来了部分游戏开发者的讨论,多数表达了反对意见。
Aras Pranckevičius使用目前最佳近似实作,由Eric Nieble撰写的range-v3,与简单版C++进行比较,他指出,C++ 20可能的问题至少有两个,编译时间与执行效能。他以Eric Nieble在自己部落格解释Ranges功能的毕氏三元数为例,以使用Ranges的C++编译程式码,编译时间长达2.92秒,比简单版C++的0.064秒还要多2.85秒,他表示,现代的CPU可以在3秒的时间,进行很大量的操作,像是以Clang在侦错模式中编译完整数据库引擎SQLite只要0.9秒,他质疑,编译毕氏三元数的5行程式码,却需要编译整个数据库引擎的3倍时间。
Aras Pranckevičius指出,编译时间是编译大型C++程式码库痛苦的来源,他随意列举Chromium、Clang/LLVM或UE4专案,都能让开发者轻易的体验这件事,他指出,编译时间就是一个C++待解决的大问题,而且应该在列表中排名之一,但是整个C++社群却假装这不是个问题。
由于在每个C++版本都会有更多的内容被放进标头档中,而且不像是C只在标头档案放入结构声明或是函式原型,C++会把整个模板化的类别和函式都加入。range-v3是一个大小1.8MB的程式标头档,而且即便预编译标头档,也只省下了0.7秒,整个编译时间仍然长达2.24秒,比简单版C++仍然长2.1秒。
另外,Aras Pranckevičius也提到,非最佳化建置效能也是非常重要的,在毕氏三元数的例子中,拥有Ranges的C++执行时间为300毫秒,而简单版的C++却只要2毫秒,也就是说执行效能慢了150倍,他认为,执行时间多2到3倍可以接受,慢10倍以上可能代表无法使用,而有Ranges的C++却是百倍以上。
执行效能对于游戏程式来说非常重要,Aras Pranckevičius表示,或许在部分应用侦错模式中慢10或100倍的时间,只是比较扰人,但是在游戏中,当每秒只有2个影格,则已经不是感觉上的问题,而是从根本上无法达到玩游戏的体验。即便建置最佳化后的执行效能与简单版本相同,但Aras Pranckevičius提到,要对最佳化的程式码侦错非常困难,这增加了工作难度。
相较之下,以C#实作毕氏三元数,使用Mono编译器编译需要0.2秒,而简单版的C#则是0.17秒,两者相去不远。Aras Pranckevičius认为,虽然C++ 20被称为现代C++,但事实上这些变化,并没有因为是“现代”而变得更好,大多数游戏开发人员都还停留在C++ 11、14或是17的版本,无论C++ 20增加了什么新功能,编译时间与侦错建置效能太差就毫无用武之地。
尽管Aras Pranckevičius的批评引起不少游戏开发者的声援赞同,但range设计目的是为了简化复杂的C++程式码,超多行数的大型程式码是否会如简单几行的毕氏三元数程式一样,遭遇到同样严重的效能问题,Aras Pranckevičius则没有进一步举例实测。
相关文章
- YouTube更新违反规定政策,提升惩处透明度和一致性
2023-12-31 14:00:52
- 传苹果将把中国iCloud正式交给本地化经营 苹果手机icloud换区存储操作
2023-12-27 18:34:43
- 刘德华代言什么手机?刘德华成华为Mate 60 RS非凡大师华为5G新手机代言人
2023-09-26 21:55:08
- WebOS新系统:Palm Pre手机最新款高价登港
2023-06-23 15:39:14
- 帮助企业组织对抗勒索软件,资安通报机构设立防护专区,可协助事前、事中与事后因应
2023-06-22 09:36:10
- 蔚来全系产品降价3万 取消免费换电 换一次电池180元
2023-06-12 17:27:49
- 电商平台三巨头开打最大规模折扣 价格战再次打响
2023-03-05 18:58:40
- 爱立信节省成本裁员四千人 爱立信全球员工总数五分之一
2023-02-24 22:27:29
- 蜜芽关停近况,八位数重金买三字顶级新域名mia.com也关闭
2023-02-23 16:18:14
- 联想CEO杨元庆:联想集团需要裁员32%削减部分业务支出
2023-02-18 12:45:25
- 蓝色光标2022营收亏损18亿 客户预算减少明显
2023-02-18 12:40:08
- 三星工厂或将80%生产转至越南 因本地劳动力成本上升
2023-02-17 23:09:16
- 香港八达通卡如何激活?没用失效过期余额怎么办
2023-02-17 18:34:51
- 中兴通讯被曝将裁员20% 称只裁国外的
2023-02-17 18:33:26
- 苹果新iPhone15Pro手机终于改用USB-C(火牛)数据线??Lightning充电接口退出
2023-02-17 16:57:22
- 突发!蓝色光标曾为中国民企500强龙头 如今业绩亏损断崖下跌
2023-02-16 14:31:19
- 三星发布自家carplay车载中控系统 Car Mode for Galaxy 可以连接carplay吗?
2023-02-14 00:53:17
- Opera浏览器宣布集成ChatGPT 一键生成网页内容摘要
2023-02-14 00:32:08
- 谷歌google计划重返进入中国市场?但结果可能令你失望
2023-02-13 16:57:15
- Zoom紧急裁员1300人 佔员工总数15%
2023-02-08 14:59:11
最新资讯
- YouTube更新违反规定政策,提升惩处透明度和一致性2023-12-31 14:00:52
- 美国法院裁定阿里须为Squishmallows玩具侵权案答辩2023-12-28 19:59:34
- 小米汽车传员工3700人 雷军称小米汽车不可能卖9万92023-12-28 19:41:57
- 吉利飙逾6% 电动车品牌极氪新车款极氪007昨上市 预售价格22.99万元2023-12-28 19:30:28
- 日本丰田汽车厂11月全球产量创新高2023-12-28 19:26:02
手机
- 中国11月手机出货量增34% 5G手机出货量2709.2万部2023-12-28 19:27:57
- 荣耀发布新一代旗舰荣耀Magic5系列,新款上市价格分期0首付3999元起2023-03-06 16:12:32
- 美国商务部指违禁,长江存储被美国拜登制裁名单面临停工裁员2023-02-17 18:41:53
- 苹果Apple iOS车载系统CarPlay支持哪些更多汽车品牌2023-02-02 17:33:27
- 香港去哪买三星手机回来吗? 买香港便宜售价手机市场地点和网站2023-02-02 11:03:11
数码
- 华为5G芯片正式亮相:预示华为将发首款5G手机2023-08-31 13:22:33
- 腾讯传计划放弃虚拟现实VR硬件计划2023-02-17 23:32:30
- 三星手机份额大跌!三星手机中国市场份额变化国内仅剩3%2023-02-01 17:06:15
- 三星手机份额大跌在中国没市场了!国内市场占有率仅剩1%国外比苹果销量高2023-02-01 16:59:53
- vivo发布2022 vivoNEX手机极简易浏览器下载:简洁流畅无广告!2022-12-02 17:29:30
科技
- 中兴受美国制裁事件 被罚了20亿美元过程事件始末 中兴被制裁后公司现状2023-11-02 22:12:46
- B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
- 苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
- 华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
- google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09