Volume 3, Issue 4 - July/August 2003
 
   
  continued from page 1...

The New VoxGateway

Java or C++?

The first decision we made as we began our rewrite of the VoxGateway was whether to continue with Java or switch to C++ for better performance.  Java was a wonderfully efficient language to write in, and it offered us tremendous portability for free.  It was also a very flexible medium to work in, which meant that as VoiceXML was defined and evolved, our code would be more likely to evolve with it instead of getting into a mess that could not be refactored.

In the end we stayed with Java.  This proved to be the correct decision.  Java was becoming faster with time, and its productivity allowed us to reimplement VoxML by mid-1999, and to implement VoiceXML 0.9 a few months later.  We tied with IBM for the first VoiceXML 1.0 browser by mid-2000, and were one of the first to have a VoiceXML 2.0 implementation.

Java's development efficiency greatly helped us with reliability.  For example, as the W3C's VoiceXML 2.0 Implementation Report test suite came out in early 2003, we quickly found and fixed all the conformance "issues" that the 610 tests uncovered, except for ten tests (one required, nine optional) that could only be passed with functionality not yet present in the speech recognizer.

But what about Java's performance?  Figure 1 illustrates the progress made.  It is a graph of how changing the number of concurrent channels affects the total time to execute a simple VoiceXML document one thousand times on a 2.4Ghz P4 desktop using the VoxGateway using various Java Virtual Machines.  The document is a simple temperature conversion dialog, which asks the caller if he or she wants to convert a Fahrenheit temperature to Celsius, or vice versa; then asks for the temperature; and then reads out the converted value and asks for another temperature to convert.  In the test the caller hangs up and the process repeats.  Please note that this is a completely artificial measure, as it involves no speech resources at all (it's a batch testing environment), does no fetching, and does only minimal logging.


Figure 1: Time to execute 1,000 dialogs with different Java Virtual Machines and different numbers of channels.

Continued...

back to the top

 

Copyright © 2001-2003 VoiceXML Forum. All rights reserved.
The VoiceXML Forum is a program of the
IEEE Industry Standards and Technology Organization (IEEE-ISTO).