出现了这个问题:
你正在寻找游戏中的瓶颈,但是你正在改变的是让游戏变得更快,无论是GPU管道还是CPU中的任何东西。没有任何东西在飙升,而且缓慢似乎分布在各处。你接下来做什么?
我很沮丧。这是一个技巧问题吗?在修复性能问题时,我总是认为这是您需要缩放所有内容的时间点。我不认为它是mem alloc,因为它显示在CPU性能中。
答案 0 :(得分:3)
我会要求提供更多信息。 “慢”是表现不佳的不良指标,是症状的分类,而不是症状本身。例如,您可能将“slow”描述为:
所有这些问题都有不同的潜在原因和解决方案:
O(N)
而不是O(1)
(python stdlib ... ick)。你无法诊断出你看不到的问题,而剖析是第一道防线。所以我想这里的答案是让面试官更充分地描述症状。 @Ali的答案很棒,但可能是手头有一个更细微的问题需要一些哄骗来诊断。
答案 1 :(得分:1)
你正在寻找游戏中的瓶颈,但你没有 改变让游戏变得更快,无论是GPU中的任何东西 管道或CPU。什么都没有飙升,似乎缓慢 分布在各地。
这几乎听起来像Uniformly Slow Code的定义。让我们假设它实际上就是这个(而不是一些I / O瓶颈或在循环中创建不必要的对象)或者对数据结构或算法等有一些不好的选择。)
为了使代码速度更慢,你通常不得不违背良好的做法,这就是为什么我通常会在代码速度一直很慢时停止优化代码。 (我认为“停止优化”在面试中不是一个好的答案......)
提高速度的一种方法是确定适当的小操作序列,将它们集中在一个地方,然后手动改进;一种“手动内联”这些操作,然后对出现的代码进行高级简化。它需要良好的直觉,这可能值得做,并且对所涉及的代码有很好的理解。 This answer calls it bunching and horizontal optimization.
如果您的真的具有统一的代码速度慢,那么可能值得研究的另一件事是Andrei Alexandrescu's optimization tips。
答案 2 :(得分:0)
也许这是关于考虑更有效的算法。 “微观优化”有其局限性;例如,你可以完美地优化冒泡排序,但要获得真正的大加速,你就会发明另一种排序算法。
此外,在游戏中,您可以引入不同类型的可调节质量/速度(或精度/速度)权衡。通常,所有游戏都有一些设置可以改变图形细节级别。
答案 3 :(得分:0)
轶事:
我可以告诉你问题是什么而不知道问题的答案; p
sloppy directx电话。太多的物体。在一些旧的dx9游戏中尤其糟糕,因为dx9需要为每个对象进行新的directdraw调用。或类似的事情,故事说。基本上导致cpu等待空闲以便gpu处理所有消息。
虽然不是每个问题的解决方案,但我认为它是一个有趣的信息; p在其他评论中没有看到它。它几乎就像拥有太多的像素着色器一样,除非至少gpu以100%的质量工作:D适合煎炸煎蛋。 (另外,使用遮挡来保存性能,然后在该模型中添加大量像素着色器是一个不错的想法)
我希望你能看到这里的幽默; p