VirtualBox is my virtualization software of choice. It is free and feature-rich, so all my virtual machines are created in VirtualBox. VirtualBox users must know that Windows 10 doesn't enable rich visual effects when running inside a VirtualBox virtual machine. Here is a workaround which forces the operating system to have a nice and fancy look.
Tip: Winaero Twеaker is essential software for every Windows 10, Windows 8 and Windows 7 user. It allows you to customize the appearance and behavior of the operating system in a flexible way.
Try Winaero Twеaker now!
Once the virtual machine is started, wait for one minute.
Indeed, the change of virtual hardware will cause the installation of many drivers by the guest OS (Windows in this case), as well as the detection of a new network location.
Once all the drivers installed by Windows are installed, choose the appropriate network location (if Windows offers it), then click "Restart Now".
As you can see at the bottom right, the virtual hardware change will also have altered the activation of Windows.
However, it will be enough to reactivate Windows with the same serial number or use a Windows command to solve this problem if you use it in evaluation version.
Before you install the drivers provided by VMware Workstation, be sure to uninstall the guest additions that you have installed for VirtualBox.
To do this, open the Control Panel -> Programs and Features and uninstall the "Oracle VM VirtualBox Guest Additions x.x.xx" program.
Now, install the drivers provided by VMware (the VMware Tools) as requested by VMware Workstation.
If VMware Workstation displays the message in yellow (as in the image below), click : Install Tools.
This action will automatically insert the "windows.iso" CD into the virtual machine's CD/DVD drive.
If the installation does't start automatically, go to Computer (or This PC, in Windows 10), then go to the "VMware Tools" CD and run the "setup.exe" file (for 32-bit versions of Windows) or "setup64.exe" (for 64-bit versions of Windows).
Once the VMware Tools are installed, open the Device Manager.
As you can see, there are no missing drivers, including a VMware SVGA 3D graphics card (which will also allow you to use Windows Aero window transparency) and an Intel(R) PRO/1000 MT network adapter.
Since the drivers have been installed and VMware by default virtualizes a 3D graphics card, you probably think that you can benefit from Windows 7 windows (Windows Aero) transparency.
For this, you right click "Customize" on the desktop and you click on the "Troubleshoot problems with transparency and other Aero effects" link.
Then, in the "Display" section, check the "Accelerate 3D graphics" box to take advantage of 3D acceleration in this virtual machine.
Note that with VMware Workstation, support for 3D is stable, unlike VirtualBox, which still offers it as an experimental feature.
Windows Aero is a Windows graphical theme that was introduced in Windows Vista. It creates translucent windows and adds effects to minimizing and maximizing. Windows Aero is usually enabled by default, but if it wasn't you can quickly enable it with just a few clicks. If you find that Aero is causing performance problems, you can disable some or all of the effects.
Typing latency is a delay between the keystroke and corresponding screen update. Sounds simple, but make no mistake, its impact on typing process is rather complex, because typing is an amazing feat of our body and nervous system (at least, from engineering standpoint).
Nervous system can to some extent adapt (pdf) to constant visual feedback delays (though never perfectly), but any irregularities in delay durations (so called jitter) pose additional problem because of their inherent unpredictability.
The findings are generally agree with available research data. If you want to go deeper into the subject, you may check some books and scholarly articles that contain data on the effects of latency and the role of visual feedback in typing, for example:
What happens between the moment you press a key and a character appears on the screen? It turns out, many, many things, and all of them take some time. Can we simply buy a top-of-the-line computer to ensure smooth typing? This helps, but only to some degree, because many parts of the process are not CPU / GPU bound. Take the both pills, and I will show you how deep the rabbit hole goes (because even what follows is only a part of the whole truth).
While conceptually there are many distinct sources of processing latency, in practice, they are so tightly coupled with editor application that all the parts are usually measured together (see the next chapter for experimental data).
Another OS-related source of possible processing delays are programs that add system-wide keyboard hooks and process the events synchronously. For example, Workrave can noticeable increase the typing latency.
If text editor / IDE works on top of process virtual machine (like JVM for Java or CLR for .NET Framework), additional delays might occur because those runtime environments are also not real-time systems (with the exception of specialized implementations, like Real time Java).
This part is the most noticeable one, and rightly so. Editor application can give rise to the major part of typing latency. Unlike hardware-induced latencies, maximum delay time within editor is practically unlimited (we might easily stumble on 1-2 s lags).
Today applications rarely run in full-screen mode, most desktop environments display each program in a separate window. This task is performed by so called window managers, which can be divided into several classes, depending on how windows are drawn and updated.
Stacking window managers orchestrate drawing of overlapped windows in such a way, that background windows are painted first. While this approach has some drawbacks (window content has to be restored explicitly), it introduces no additional delays because applications draw directly in the framebuffer. Examples of stacking window managers: Classic theme in Windows, Openbox in Linux.
Compositing window managers substitute the framebuffer with a dedicated off-screen buffer for each window, and then display all the windows together when (and how) they see fit. This separation inevitable leads to some latency increase. Examples of compositing managers: Aero in Windows, Compiz in Linux.
LCD pixels cannot react to controlling voltage changes immediately.The amount of time a pixel in a display takes to change is called pixel response time. This time depends mostly on LCD matrix technology (TN, IPS, VA, etc.). LCD monitors have come a long way in reducing pixel response time, so modern TN monitors (most widely used nowadays) exhibit average response times only about 4 ms.
Both input and output components of the latency are precisely determined by periodical hardware processes that can be estimated with high accuracy. Those delays are independent of CPU / GPU performance, and have predictable upper bounds. Typical average latency of keyboard and monitor combined is about 26 ms, which is not much by itself, but when it adds up to processing delay it can make editor latency more noticeable. Even the I/O latency itself is already above the human perception threshold.
Typometer works by generating OS input events and using screen capture to measure the delay between a keystroke and a corresponding screen update. Hence, the measurement encompasses all the constituents of processing latency (i. e. OS queue, VM, editor, GPU pipeline, buffering, window manager and possible V-Sync). That is the right thing to do, because all those components are inherently intertwined with the editor, and in principle, editor application has influence on all the parts.
Note that as I run benchmarks on the same hardware and all editor versions match, the results are directly comparable. Because results might vary depending on exact configuration, I used a rather typical setup for the benchmarking (the machine is neither too slow, nor too powerful) to make results more representative.
Given that measured delays of fastest applications (like Notepad) is below 1 ms and stable, it seems safe to assume that the measuring tool provides enough precision and accuracy. Because the relationship between framebuffer and output video signal is deterministic, the results can be considered representative.
In-between behavior is also common, when periods of stable delay are periodically interrupted by occasional spikes. Sometimes values show a trend that reveals linear dependency of editor algorithms on character horizontal position.
As an introduction to analyzing latency, I recommend you to check a great talk on how not to measure latency, which explains why average values are better measure of latency than median values and why maximum values are very important.
As for editors in terminal emulators, I excluded those cases because terminal emulators often produce a major part of latency (and results vary widely). Most terminal emulators seem to exhibit more latency than, for example, GVim.
using xml is unfortunate for emacs, because the xml-mode in emacs 24.x does real-time xml validation on the fly, and is written by xml expert James Clark (who also wrote probably the most widely used xml parser lib in C)
I described various technical details in a separate article on low-latency painting in AWT and Swing (despite the focus on Java platform, the key ideas can be extended to most modern operation systems and GUI frameworks).
A related design decision:
Asynchronous operations. The editor should never, ever block and prevent the user from getting their work done. For example, autosave will spawn a thread with a snapshot of the current editor buffer (the peristent rope data structure is copy-on-write so this operation is nearly free), which can then proceed to write out to disk at its leisure, while the buffer is still fully editable.