正如我们在刚才文章中提到的,理论上,SPECviewperf使用的是从实际应用程序中抽取的OperGL记录,应该是实际应用程序性能一个很好的指示器。这种理论的主要问题是SPECviewperf只使用应用程序中截取的OpenGL记录,建模时使用这些记录(有可能对原始记录进行修改)并旋转模型以获得原始帧数。由于SPECviewperf不能使用程序本身的实际图形引擎,所以SPECviewperf的贴图不具有可比性。SPECapc项目组另外提供了一些使用实际应用程序的基准测试软件,但是如果我们用SPECviewperf的测试结果与SPECapc所提供的其他基准测试软件作比较,会轻易看到两者的差别。我们不妨仔细看看一些SPECviewperf的个别测试成绩,看看它们和相应应用程序的基准成绩的差别有多大。
应用程序性能研究
SPECviewperf“snx-01”测试项目使用的是提取自西门子PLM NX7应用程序中的OpenGL记录,如果我们用ATI FirePro V7800和NVIDIA公司的Quadro 4000作对比(这里我们暂且不考虑产品的售价问题,纯从产品定位出发),我们得到以下测试成绩:
但如果我们用SPECapc for UGS NX4来测试,得到的是完全不同的结果:
为什么出现这种差异?因为SPECviewperf是用自己的贴图引擎重新显示原始记录,并非NX程序的精确复制。UGS(现在叫西门子PLM)所提供的NX4基准测试成绩取自实际应用中的数据集,并没有经过任何图形引擎的重新处理。这个SPECapc测试软件对用户了解应用程序在某块特定显卡上的运行情况提供了一个更好的参考。
同样的结果还存在与SPECviewperf的其他子测试项目中我们都能看到同样的结果。例如在“lightwave-01”测试中,ATI FirePro V5800与NVIDIA Quadro 2000的结果对比如下:
但用SPECapc for Lightwave 3D? 9.6测试的话, 这个软件所提供的3D建模性能成绩是这样的:
在这个例子中同样的情况再次出现了,ATI FirePro显卡在SPECviewperf测试中落后,但在实际应用程序测试上领先。对这些数据进行分析后可以看出,SPECviewperf可能并不适合用于衡量实际图形性能。如果用户仅仅依赖SPECviewperf的测试结果的话,他们可能会对使用应用程序、数据集和工程流程时的实际性能表现大吃一惊。