设为主页 | 加入收藏 | 繁體中文

安兔兔评测“作弊内幕”

 兔兔评测是国内安卓手机、平板最常用的性能测试工具,目前,也常用来评测安卓机顶盒的性能,为了在某个特定的测试项上获取更佳的得分结果,在这上面的作弊也是屡见不鲜。

近日笔者通过测试2台均使用了RK3128平台的机顶盒的同一版本安兔兔(安兔兔V5.7)跑分,却得到了差距悬殊的结果。其中,中国移动招标测试某RK3128盒子总得分为24154,某品牌RK3128盒子总得分14673,相差9481分!而这其中尤为明显差异的是单线程浮点,2个盒子该指标上居然相差5959分。

单线程能力是可以体现在某些低功耗运行设定下的实际性能表现。用户需要知道自己的设备性能极限在哪里,也需要知道自己能日常够用到的性能大概有多少。

在固有的观念中,CPU核心数量的增多会被认为整体性能将有所提升,这点也并非毫无根据。但在实际使用过程中,我们经常接触的很多APP应用程序和游戏并未针对多核心CPU进行优化,大多数情况下只是开启一个或者两个CPU核心。

所以单核心单线程的性能表现也被安兔兔认为有重要影响,并且其测试分值也被纳入评分体系之中,从而令新版安兔兔测试成绩得分数字再度提高。

RK3128盒子的安兔兔跑分对比

中国移动招标测试某RK3128盒子安兔兔跑分

某品牌RK3128盒子安兔兔跑分

从结果来看笔者怀疑可能对libm(动态链接库文件)做了一些特殊处理(profile显示在跑single thread floating测试时对libm里面的调用比较多),比如针对安兔兔跑分调用libm里面的函数做计算时候输入的数据,可以直接返回结果而不计算,这样可以在速度上比实际通过VFP指令计算要快得多。

为了进一步确认这款盒子是否针对安兔兔有进行作弊,笔者又测试了这2个盒子Geek bench的跑分,以下只关注浮点运算部分。

RK3128盒子的Geek bench测试浮点运算得分

中国移动招标测试某RK3128盒子Geek bench测试浮点运算得分

某品牌RK3128盒子Geek bench测试浮点运算得分

从Geek bench的跑分测试来看,中国移动招标测试某RK3128盒子与某品牌RK3128盒子的浮点运算得分结果上没有明显的差异,结合到表格1的跑分结果,可以看出来很明显针对安兔兔APK做了“特殊优化”,从而影响了最终的跑分结果。

在性能上,同样系Cortex-A7内核的SOC,在同等条件下若没有进行技术作弊,单线程浮点这个指标的得分结果不会有太大差异。为此,为了进一步验证,笔者又找了1款其他Cortex-A7盒子与前述的2款RK3128盒子一同基于相同版本的安兔兔(安兔兔V5.7)又重新进行了跑分测试。

Cortex-A7盒子安兔兔跑分测试

从结果来看,

A品牌A31S盒子与某品牌RK3128盒子单线程浮点指标分数都在800+,而中国移动招标测试RK3128盒子在单线程浮点指标分数上,却是其它2款盒子的7倍还多,进一步验证了其安兔兔跑分的作弊情况。

实际上,笔者在网络上搜索后发现这样的作弊情况并不是首次,有网友就针对RK3288宣传安兔兔跑分43000+的情况,做过非常细致的测评,针对浮点跑分就是利用lib注入方式进行作弊。

据了解,早期的安兔兔版本都是通过直接调用libm里面的pow、cos、sin等数学函数来进行测试,由于libm里面这些函数的实现是开源的,所以容易遭到针对性的修改。比如检测到安兔兔在运行的时候,可以让这些函数直接返回特定的结果而并不实际运算,这样能够大大节约测试时间并提高分数。

出于上述因素的考虑,版本较高的安兔兔已经将这些库函数自己做了一个实现,放在libabenchmark.so里面,这个so是安兔兔的测试程序里面自带,一定程度上可以有效避免厂商修改开源的libm.so带来的作弊问题,但是并不意味着这样就彻底了解决作弊问题。

目前,出现了一些采用更加隐蔽的注入式方式进行作弊,即在加载安兔兔自带的这个so的时候,用自己实现的做过弊的函数来替换掉安兔兔库里面的函数,从而达到跑高分的目的。


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: