「科普?好啊!」
「」
苏砚承感觉需要给他们好好上一课了,「程序组的,来会议室集合吧,你们老大的编程小课堂开课了!」
于是在其他组的注视下,程序组浩浩荡荡的挤到了会议室里。
几十分钟过去,都不见出来。
「嘿,你!」
武内崇让美术组的小弟去打听一下,里边在讲什么。
小弟就开了条缝,探头进去听了几秒。
出来时,表情一片情懂,挠着头开始怀疑自己的智力。
别说学美术的了,就连会议室里的程式设计师。
此刻都感觉自己像只卷毛狒狒。
毕竟也很正常,苏砚承提出的四个优化概念,放在当今的行业水平,那就是绝对的超前理念!
哪怕是约翰·卡马克这样的大神级人物。
优化思路,也停留在「在单线程框架内,对代码进行极致抠细节」级别。
比如做一些精简循环、减少3D渲染的多边形数量、优化显存加载之类————
毕竟大环境如此,相关技术的核心关键词,还是「单核为王」、「功能优先」、「小修小补式优化」————
但苏砚承提出来的呢?
五个字,架构级重构!
举个例子,他这就相当于。
在马车时代讲汽车的发动机原理!
或者在一群只会算加减乘除的数学人之间,忽然开始讲微积分!
但能不能做到呢?
并非完全不能,只是需要做大量的「时代适配妥协」!
虽然不是理想中的完美落地,而是基于现有硬体和工具链的阉割版落地。
但苏砚承觉得,放在这个时代,这也勉强够用了。
程式设计师们:居然只是,勉强够用吗?
会议室里。
程式设计师们不敢说话。
纷纷看着渡边连续不断的发问,哪怕有些问题听上去甚至像是找茬。
甚至,从第一个问题,渡边和苏砚承两人就跟吵架似的。
「无数的例子证明过,单核搞多线程就是浪费资源!线程切换的开销会吃掉所有效率!
所以多线程在游戏环境中,其性能表现反而不如单线程,」
渡边正在厉声质问:「所以你怎么会想到这个的呢!」
苏砚承笑而不语。
嗯,所以是的,其实多线程的优化思路,早已有之。
用开饭店来简单比喻的话。
多核PU,那就是好几个灶台,好几个厨师,能同时炒不同的菜。
而单核的PU,只有一个灶台,一个厨师。
他没法同时炒两盘菜。
但多线程思路下,可以让厨师先炒一下A菜,关火,再炒几下B菜,再关火,切回A菜————
只不过切换速度是毫秒级别的快,所以在外人看来,就像两盘菜在同时炒。
但用专业一点的角度来看,线程的切换,是有开销的。
你大厨洗锅、换铲子都需要额外的时间。
所以如果强行把游戏核心逻辑,拆分成多个线程来运行。
不仅不会带来效率的提升,反而会让游戏变卡。
这就是,当下行业的共识是:「单核搞多线程,纯属自找麻烦!」
只是苏砚承更先进的想法。
「那如果我不拆分核心计算,而是只拆分辅助任务,只做功能拆分的轻量多线程呢?」
渡边和程式设计师眨眼:「————」
苏砚承笑。
听不懂了吧?
没关系,咱们来细细解释。
「注意这里,该记笔记了啊!」
「还有看我干嘛,看黑板啊!」
他重重敲黑板。
众人赶紧正襟危坐,纷纷捏紧笔,认真听讲。
「首先,音频播放、文件预加载、数据接收这些轻任务,其实并不会占用大量的PU时间,甚至还要长时间的还经常等活儿干」——
「比如音频线程,要等音效卡缓冲区空了,才需要运行。」
「文件线程,要等硬碟读写完成,才需要处理!」
苏砚承说,「而当我们将它们拆成独立线程后,负责渲染和逻辑的主线程在等待硬体响应的间隙,这部分间隙的时间,我们就可以分给辅助线程。」
相当于厨师炒主菜的间隙,顺手切个配菜,完全不耽误主菜进度,还能提高厨房的整体效率。