Why does performance matter? As it turns out, depending on what you are doing, it doesn’t. On the other hand, again depending on what you are doing—it can be critical. Business success, particularly for websites that work within a media-rich environment or process millions of requests per day, can depend on performance.
Interpreted vs. native code
Historically, server-based computing started out divided into two camps: compiled and scripted code. Scripted code was generally preferred when it became common practice to host a hundred different websites on the same computer. It could more easily be made to respect server restrictions and it could access a process of isolation called sandboxing.
Compiled code was generally regarded as the best option for maximum performance but, at the time, one compiled server extension could not be isolated from the next one running on the same computer and so was regarded as a solution that required a dedicated server.
In order to guarantee overall server stability, process isolation was desirable even between different extensions created by the same company. Java, a language/platform that performed like native code but allowed different applications to be sandboxed in their own virtual machines, become the recognized choice for large scale enterprise development. It offered better performance than scripting languages, especially with the advent of just-in-time compilation, but could isolate processes in their own spaces.
The difference between a completely native and an interpreted solution is small for basic file serving, but with intense server-based calculations or data processing this difference really stands out. Native applications beat interpreted applications in performance and memory utilization in just about every task. This is the reason why platforms such as Java and .NET perform just-in-time compilation to machine language that allows code to run natively after the first time it is executed.
Even solutions that have just-in-time compilation and in which subsequent calls are to natively compiled code, however, are not evenly matched against a natively compiled version of the same algorithm. This is because of the small overhead required (again sandboxing) to guarantee the isolation and behavior of the code being executed.
High performance server code
Morfik takes a different approach to creating a high performance computing solution for server-based processing. This approach uses natively compiled code for all server-side processing, relying on the significant evolution of operating system process isolation and hardware abstraction visualization that has occurred over the last decade to handle server stability and isolation. Server code is entirely compiled into machine native code and relies on software components with a small memory footprint. This is the ideal combination for creating computationally intensive applications that can be run on virtual machines.
Most of today’s effective implementations of a cloud computing environment rely on hypervisor-based virtual machines and thus effectively sandbox applications of one user from those of other users. In this scenario, running an additional level of virtualization and sandboxing is at most times irrelevant from a reliability point of view while still affecting performance.
Low memory utilization
Morfik-built applications are, by default, stateless on the server-side, which makes them lightweight in memory consumption and ideally suited for load balancing in server farm environments.