which is the best way benchmarking different cpus?

Support and general discussion.
Post Reply
handlingcfg
Posts: 7
Joined: Tue 14 Jun, 2022 6:16 am

which is the best way benchmarking different cpus?

Post by handlingcfg »

hello everyone,
on 5700x, i run 3dmark2000, (voodoo 3)
celeron 266 gets 1222 and cpu 59, it rarely gets down %95, and no sound distortions, %95 time it gets %100 emulation speed
celeron 533 gets 2305 and cpu 109, it sometimes drops about %60, and sound distortions

my older r5 3600@ oc 4300mhz
celeron 533 gets 2293 and cpu 109,

so according to this data, i get little to none benefit for changing cpu, when my older cpu died, i considered 5800x3d, but it is slower, no oc support and its not guaranteed to benefit some apllications, so i choose 5700x for much cheaper price,
i also thnk whether intel 13th series would get much better performance(maybe celeron 300 performance), but i dont want to use windows 11,

so what can be done for pcem performance comparitions between different host cpus?
Last edited by handlingcfg on Sun 26 Feb, 2023 1:15 pm, edited 1 time in total.
User avatar
unreal9010
Posts: 160
Joined: Sat 14 Nov, 2020 8:20 pm

Re: which is the best way benchmarking different cpus?

Post by unreal9010 »

The best way to benchmark capabilities of the host CPU would be to run more demanding SVGA games such as Journeyman Project III and Zork Grand Inquisitor.
3D Mark 2000 isn't the best way to measure how far can you push your host CPU since Voodoo card emulation can take the advantage of up to 4 render threads.
I own 12900KF and for me the absolute upper limit before I start getting dropdowns below 100% is Pentium II 350 Mhz.
Pentium II 400 Mhz is very stable most of the time, but there are some dropdowns to 92-95% when running certain things (e.g. Gran Turismo on ePSXe).
User avatar
leilei
Posts: 1039
Joined: Fri 25 Apr, 2014 4:47 pm

Re: which is the best way benchmarking different cpus?

Post by leilei »

For Ryzen, turning off SMT helps.
harrison98
Posts: 51
Joined: Sat 21 Jan, 2023 12:23 am

Re: which is the best way benchmarking different cpus?

Post by harrison98 »

You can't benchmark PCem performance the same way you would real hardware.

When you run 3dMark2000, you're benchmarking the emulated hardware, not the host CPU.

In addition, you can't benchmark PCem performance using a single application, because performance depends on the software being run and how efficiently the code can be recompiled.

You can try running a variety of games to determine the overall minimum guest CPU your host CPU can handle consistently at 100%...

But if you want to maximize PCem performance, then you really have to adjust the guest CPU on a per-game basis.

If you just set PCem to a single guest CPU and never change it, then some games will be underperforming - meaning you'll be getting lower FPS than is possible.
User avatar
unreal9010
Posts: 160
Joined: Sat 14 Nov, 2020 8:20 pm

Re: which is the best way benchmarking different cpus?

Post by unreal9010 »

Indeed, it's impossible to benchmark PCem performance based on how single application behaves. However, there are certain applications that are significantly more demanding than others (such as the ones mentioned above) and being able to run them at 100% indicates that you will be able to run other stuff at 100% too. Exceptions are of course still possible, but after thoroughly testing 250+games and several emulators during the past year I can say that there are hardly any exceptions to this rule.
User avatar
unreal9010
Posts: 160
Joined: Sat 14 Nov, 2020 8:20 pm

Re: which is the best way benchmarking different cpus?

Post by unreal9010 »

It might seem a bit awkward that a 1996 or 1998 adventure that requires no more than P75 is more difficult to emulate at 100% speed than System Shock 2, Quake 3 Arena or 3D Mark 2000 given the system requirements, but that's how it is. Apparently, something is making host CPUs to struggle more when running games using SVGA graphics and certain video formats (e.g. Quick Time).
User avatar
creopard
Posts: 7
Joined: Fri 10 Feb, 2023 10:19 am
Contact:

Re: which is the best way benchmarking different cpus?

Post by creopard »

harrison98 wrote: Wed 01 Mar, 2023 2:17 am But if you want to maximize PCem performance, then you really have to adjust the guest CPU on a per-game basis.

If you just set PCem to a single guest CPU and never change it, then some games will be underperforming - meaning you'll be getting lower FPS than is possible.
What about running CPU stress tests in the guest system (like Prime95 or one of the CPU tools from https://www.ultimatebootcd.com/)
This would max out the guest CPU, so you can at check in parallel on the host CPU if it can handle the guest CPU's load, right?
User avatar
unreal9010
Posts: 160
Joined: Sat 14 Nov, 2020 8:20 pm

Re: which is the best way benchmarking different cpus?

Post by unreal9010 »

I tried different benchmarking tools, however, the problem was that some of them caused regressions and some gave inaccurate results.
For example, 3D Mark 99 reports 78 fps as the average during the first test (a racing game). This is simply not true as the actual rendering speed feels slower than what was reported. It's also impossible to achieve such speed with Pentium II 350 and Voodoo 2 (even in SLI mode).
In PCP PLAYER 640X480 my virtual machine achieved the score of 57 which was more realistic.
Quake/Quake II benchmarks turned out to be close to how the real machines would perform and are therefore considered reliable under PCem.
3D Bench ran incredibly fast and the score was 3428 (which is at least 10 times faster than the actual hardware would be).
Winbench'98, on the other hand, was regressing heavily. I got dropdowns to 6% when doing DirectDraw tests.
eddman
Posts: 74
Joined: Wed 09 Feb, 2022 9:30 am

Re: which is the best way benchmarking different cpus?

Post by eddman »

creopard wrote: Wed 01 Mar, 2023 3:07 pm What about running CPU stress tests in the guest system (like Prime95 or one of the CPU tools from https://www.ultimatebootcd.com/)
This would max out the guest CPU, so you can at check in parallel on the host CPU if it can handle the guest CPU's load, right?
The emulated CPU does not behave like real hardware; maxing out the guest CPU with synthetic benchmarks is useless, since you'll be benchmarking the performance of that particular software itself, NOT the performance of the guest CPU. Besides, if you try Prime95 it'd fail to run and throw errors (at least it did for me), which IINM is because PCem's FPU emulation isn't 100% accurate to achieve an acceptable level of performance.

As already stated by others, you have to check every single game you want to run and pick the highest possible guest CPU for that specific game. For example, late 1990s 3D shooters could run at 100% emu speed with performance to spare, and yet certain older, much lighter DOS games can cause the speed to drop to below even 50%.

One thing to note, on Windows make sure the power plan is set to at least "High performance". On some setups, the balanced plans cause the frequency to drop heavily which kills the performance. Also, don't use vNext builds. In my tests they are much slower than v17.
harrison98
Posts: 51
Joined: Sat 21 Jan, 2023 12:23 am

Re: which is the best way benchmarking different cpus?

Post by harrison98 »

creopard wrote: Wed 01 Mar, 2023 3:07 pm What about running CPU stress tests in the guest system (like Prime95 or one of the CPU tools from https://www.ultimatebootcd.com/)
This would max out the guest CPU, so you can at check in parallel on the host CPU if it can handle the guest CPU's load, right?
It helps to generally understand how dynamic recompilation works in emulation to see what's going on. With dynamic recompilation, efficiencies are made in the emulated code that would not be possible on the original CPU, but are possible via an emulated environment on the more powerful host CPU. These efficiencies speed up the emulation, but they are entirely dependent on the specific code being run on the emulated CPU. In PCem, dynamic recompilation is necessary to emulate Pentium CPUs at acceptable speeds.

Maxing out the guest CPU with a single program doesn't fully reveal the host CPU's ability to run PCem. It just reveals the speed of PCem's dynamic recompiler in handling that specific program.

You cannot approach PCem with the same mindset of original hardware and benchmarking.
unreal9010 wrote: Wed 01 Mar, 2023 1:43 pm Indeed, it's impossible to benchmark PCem performance based on how single application behaves. However, there are certain applications that are significantly more demanding than others (such as the ones mentioned above) and being able to run them at 100% indicates that you will be able to run other stuff at 100% too. Exceptions are of course still possible, but after thoroughly testing 250+games and several emulators during the past year I can say that there are hardly any exceptions to this rule.
Sure, you can do that. It might be a useful approach if you are sampling a lot of software or you are generally running software that wouldn't benefit from a boost in CPU frequency.

However, it seems a bit arbitrary to limit PCem performance based on a subset of software that the dynamic recompiler handles poorly.

For people who are going to be playing a single 3D game at length, it makes more sense to manually set the guest CPU at PCem startup to the max of what the recompiler can handle for that game. That will give the best performance. It's relatively easy to determine how high the guest CPU can go by monitoring the "CPU time" percent in the machine status window when the game is run.
User avatar
unreal9010
Posts: 160
Joined: Sat 14 Nov, 2020 8:20 pm

Re: which is the best way benchmarking different cpus?

Post by unreal9010 »

creopard wrote: Wed 01 Mar, 2023 3:07 pm However, it seems a bit arbitrary to limit PCem performance based on a subset of software that the dynamic recompiler handles poorly.
I specifically took that into account while testing. There are currently dynarec-related regressions that happen regardless of the guest CPU speed. This is a different category.
For example, Ultimate Race Pro is rock solid stable at 100% with v17 stable build yet it regresses down to 50% on any post-v17 development build. Some games (e.g. the SCUMM engine games) require the internal CPU cache to be turned off in the Bios in order to work at 100%. I made sure that my limitations were host CPU and not dynarec regressions-related.
harrison98
Posts: 51
Joined: Sat 21 Jan, 2023 12:23 am

Re: which is the best way benchmarking different cpus?

Post by harrison98 »

I'm not talking about particular problems with the dynamic recompiler. I'm talking about how dynamic recompilation itself works.

Again, dynamic recompilation will be more or less efficient on the particular code that is being recompiled, which is why some games on a high-end host CPU can run on, say, PII-450 without problems, while others can only run on PII-300. And it has nothing to do with how demanding a game might seem.

If you're just setting your guest CPU to a single frequency for everything, you're not getting the most out of what PCem can do. Anyone who is trying to push maximum performance on late 90s 3D games should be adjusting frequency on a per-game basis.
Post Reply