As I've said, we've received a 50~200% performance increase from moving away from Java. Java as a language is horrible for performance, no amount of tweaking seems to fix it. Its a lot more then just the JIT, the whole JVM idea is that spawns a new process and grabs memory then runs the JAR inside that memory space. What we've noticed is that Java isn't very memory efficient and you need to grab a space significantly larger then what your program ~could~ use.
Each system has about a dozen core process's that need to run, their basically control daemons. Each daemon reads a configuration file and spawns a process that corresponds to the entries for channels and connections and so forth. This is a complicated system and you end up with 40 ~60 javavm's running simultaneously all doing a ton of encoding / decoding work. The system is a SUN T5220, running an insane number of process's is what this system is designed to do.
The javavm instances consume too much memory and are very inefficient for code execution. By recoding and running straight on binary we saved a ton of performance and allowed us to scale higher.
Java is a great language for university's or some web applications, but for core process's and daemons it absolutely sucks.
Each system has about a dozen core process's that need to run, their basically control daemons. Each daemon reads a configuration file and spawns a process that corresponds to the entries for channels and connections and so forth. This is a complicated system and you end up with 40 ~60 javavm's running simultaneously all doing a ton of encoding / decoding work. The system is a SUN T5220, running an insane number of process's is what this system is designed to do.
The javavm instances consume too much memory and are very inefficient for code execution. By recoding and running straight on binary we saved a ton of performance and allowed us to scale higher.
Java is a great language for university's or some web applications, but for core process's and daemons it absolutely sucks.