Samsung Caught Boosting Galaxy S4 Benchmarks
A recent forum post at Beyond3D made an interesting claim: that the Samsung Galaxy S4's GPU ran at 532 MHz for certain whitelisted benchmark applications, and at 480 MHz for everything else. The folks at AnandTech decided to investigate and found out that the phone does indeed let its GPU run at a higher frequency when particular benchmark software is running. They found a similar oddity with the CPU — it wasn't restricted for other apps, but it was forced to run at max speed during benchmarks. Then they decided to look for direct evidence that this was intentional.
"Poking around I came across the application changing the DVFS behavior to allow these frequency changes – TwDVFSApp.apk. Opening the file in a hex editor and looking at strings inside (or just running strings on the .odex file) pointed at what appeared to be hard coded profiles/exceptions for certain applications. The string 'BenchmarkBooster' is a particularly telling one. ... Quadrant standard, advanced, and professional, linpack (free, not paid), Benchmark Pi, and AnTuTu are all called out specifically. Nothing for GLBenchmark 2.5.1 though, despite its similar behavior."
"No. They can't. Please try reading the article."
A wrong article is still wrong. Samsung themselves have quoted a number of their apps that run at 533mhz. You'll have to let other vendors tell us whether they use the same optimisations or not.
Realistically the biggest problem is that most people don't bother to optimise specifically for the GS4 because it's extra work for not really any worthwhile benefit (an extra 53mhz isn't going to change that much, especially at the expense of higher power consumption) so not many apps will run at the full 533mhz and I agree that's an issue, but it doesn't change the fact that 533mhz is the correct clock speed to benchmark the phones optimum capability at.
"If I run a normal app (say, a game), does the GPU get this "most high performance profile" as well?"
Depends on the app, for some yes, for most no.
"The point of a benchmark is to give a benchmark of REALISTIC performance on a device, as a user would get under normal daily usage."
I think this is where the real problem is, there's no real consistent definition of what benchmarks are meant to represent and I agree with other posters in this thread that the best option is to stop caring about benchmarks at all and just focus on how well the device works in practice. If you mostly just use Samsung's apps that do run at 533mhz then the benchmarks would be realistic for you, if you use a bunch of 3rd party apps that only run at 480mhz then this benchmark wont be representative and that's the problem with figuring out what a benchmark even means in practice.
It started getting awkward enough with cores/multiple CPUs where the type of processing can be effected drastically by concurrency, but when you have specific optimisation options too then it just becomes too messy to extract any meaningful comparisons from benchmarks. Even years ago this could be a problem where processors could be compared directly with benchmark applications but some benchmark applications didn't check for and make use of SIMD optimisations when they first came about meaning the result simply weren't fair because the processors with SIMD instructions weren't being used to their greatest extent. It's only got worse since then as we have ever more optional optimisations.