From: Alex Ionescu
Well, I have good news and I have bad news. Let's start with the good news
This patch improves by around 15-20% (tested but not
scientific) the speed of ReactOS on all hardware and
virtual machines. Furthermore, it improves speed by
over 50% (tested but not scientific) on hardware
supporting the SYSENTER/SYSEXIT call pair.
I have done some testing using rosperf (reactos/apps/utils/rosperf) and for
some of the tests (making lots of calls into the kernel) I see a significant
improvement (larger number is better):
Small Fill, old 32400/s, new 36600/s, improvement 13%
Horizontal Lines, old 23900/s, new 28800/s, improvement 20.5%
Vertical Lines, old 15100/s, new 16800/s, improvement 11.3%
Lines, old 7930/s, new 8430/s, improvement 6.3%
Fill, old 126/s, new 126/s, unchanged
We're now beating the XP VgaSave (default non-hardware accelerated driver,
comparable to our VBE driver) for some tests: XP smallfill 32500/s, hlines
19900/s, vlines 20200/s, lines 19700/s, fill 126/s
These tests were done on a 300MHz Celeron machine.
On VMWare however, due to causes still under
investigation,
SYSENTER/SYSEXIT must be disabled, or else there is a 3X slowdown.
Vmwinst takes care of writing the Windows-compatible Value in the
Registry, and it is read before choosing which kind of call
to execute.
This means that vmware is able to take advantage of the ~20% speedup,
but not of all the full capability of this patch.
This is where the bad news starts. Using an older version of VMware (4.0.5
build-6030 to be exact) ReactOS causes VMware to crash soon after smss.exe
is loaded, so my guess is that this happens on the first SYSENTER. This is
bad 'cause it also happens during setup, before vmwinst has run.
Another problem: it seems we're not allowed to do floating point arithmetic
in usermode anymore. On the first floating point operation the process is
terminated with a page fault exception.
Congratulations to Alex and the other people who made this happen, I think
this is a significant step forward in performance.
Gé van Geldorp.