box86 vs native:OpenGL几乎是本地,CPU绑定50%,SSE3慢

2021-03-29 01:23:30

如何衡量仿真器表演?因为它没有运行,因此原始的性能测量是不可能的。有可能的是比较2个构建的同一程序的性能:一个本机和一个在模拟结构上。虽然编译选项和编译器上的编译器架构上的编译器可能仍可能介绍状态,但它可以为比较提供一个很好的基础。

7Z是一个广泛使用的压缩程序,可以在每个分发上提供,它配备了集成的基准。基准似乎似乎没有使用太多的SSE代码,并且非常CPU表演中心。因此,它可以用于评估CPU电源,并且被认为是Box86的“最坏情况”(大多数CPU,没有SSE,非常小的LiftureFunction调用)。

DAV1D是一个视频转码工具。它使用高度优化的SSSE3或霓虹灯例程。这是“NightMaresceNario”:用手工优化的装配例程,大多数没有包装的函数调用。

另一方面,Glark2用于测量OpenGL性能。在这里,CPU没有太多使用,它是大部分呼叫。这是Box86(主要是本机库函数调用)的理想情况。

这里使用的7z是分布中发现的16.02版本。x86一个来自debian,以及来自分布的本土人(披着潘多拉建造的潘多拉)。

7-ZIP [32] 16.02:版权所有(C)1999-2016 Igor Pavlov:2016-05-21 p7zip版本16.02(locale = en_us.utf-8,utf16 =上,巨大文件=上,32位,4 cpus le) 乐 CPU FREQ:792 1486 1498 1495 1498 1492 1496 1493 1496 1496 1496 RAM大小:3776 MB,#CPU硬件线程:4 RAM使用率:882 MB,#基准线程:4 压缩|解压缩 Dict速度使用R / U rating |速度使用R / U评级 Kib / s%MIPS MIPS | Kib / s%mips mips 22:3639 333 1062 3540 | 92329 396 1989 7877 23:3539 338 1068 3606 | 90082 394 1976 7794 24:3585 359 1075 3855 | 87605 395 1945 7691 25:3506 367 1090 4004 | 84190 394 1901 7493 ------------------------------ | ------------------------------- AVR:349 1074 3751 | 395 1953 7714 Tot:372 1513 5733

我将仅报告最后一个数字(所以在这里5733),并在本机和模拟程序之间进行比较,每个硬件。

(1)仅限于4个核心。 (2)本土在这里是AARCH64。 (3)我怀疑X86测试触发一些热压瓶。 (4)使用遥控软件肯定会降低结果。

在CPU强化应用程序上,没有SSE3 +优化,使用标志和条件跳跃很多(这是最亮片操作),仿真软件大约是本机速度的50%。虽然这个数字仍然可以用当前的Dynarec设计避免(我有几个优化想法),但这可能不会改变许多未来(如果最后一个优化循环循环,则可能会在60%上面的最低限度)。

DAV1D是一种代码转换应用,适用于SIMD优化,并在ARM上使用SSSE(或SSE4,如果可用)ANDON。虽然MMX,SSE和SSE2相当良好地转换为霓虹灯,但SSSE3并非如SSSE3,转换导致MoreComplex,导致每个SSSE3 One发出4个或更多霓虹Opcode(如XMM Regs上的PMADDUBSW)生成10个氖基。此外,由于DAV1D的功能是手优化汇编程序,因此x86和本机不会较低的数字之间的比较,因为Dynarec转换为1:1操作码,而无需重新排序或删除任何操作码。 Resuling SSE-和GT;霓虹码比手优化的惯例更少。该基准将使用命令./dav1d -i chimera-av1-8bit-480x270-552kbps.ivf -muxer null,并且将采取生成的fps。在测试多个线程时,将--frameThreads x --tilethreads x添加到命令,其中2 x是ofthreads的数字。 x86版本来自Debian分发。

(1)DAV1D的本机构建是自定义构建,可能比分布的常规版本更优化。 (2)本土在这里是AARCH64。

Glark2是一个测试OpenGL速度的程序。目标胶凝硬件的版本也存在,但由于Box86并不支持Gles2,因此此处仅使用桌面OpenGL版本。一些分发(如debian)不包括glark2,因此在此处使用git源的最新版本(因此2020.04版)。对于没有FulloPengl驱动程序的平台,将使用GL4ES。请注意,Glark2仅在OpenGL 2.1上运行时会崩溃(因为它使用GlgenerateMipMap函数,但仅在OpenGL 3.0+上获取该函数),因此使用GL4ES仅公开2.1配置文件的ONMESA驱动程序使用Mesa_GL_VERSION_OVERRIDE = 3.2。

Glark2得分仅在此处使用,以默认的窗口为800x600分辨率(在Pandora上裁剪到800x480)。

(1)vsync无法禁用,降低结果。 (2)本土在这里是AARCH64。 (3)使用遥控软件肯定会降低结果

运行主要依赖于外部库(包裹的应用程序)时,靠近本机速度可以自行车,所有结果都在这里介于95%和100%的原生速度之间。 所以在现实世界的应用和游戏中,这两个极端测试用例之间的东西将会介于两者之间。 请注意,SSE操作码等内容将转换为霓虹灯,并且大部分时间为1:1转换,在Box86中使Optimized SSE / SSE2代码非常优化。 SSE3 / SSSE3更难,转换的代码变慢。 包装功能获得本机速度,如果它是本机应用程序(如果应用程序/游戏包含ASM手优化例程,则仿真CPU将至少50%。 由此产生的速度将是仿真代码与包装的百分比的百分比......