Мне кажется проблема производительности в xml парсере. Как выше уже спрашивали, используете DOM или SAX? Если критична производительность/большой объём xml-файлов, то стоит использовать SAX.
А для ускорения scala программы, имеет смысл поиграться с параметрами jvm, например включить «AggressiveOpts»:
Запускать так:
$ JAVA_OPTS="-XX:+AggressiveOpts" scala parser.scala
P.S. исходный код парсера на scala покажете?
P.P.S. и ещё, для замера производительности желательно «прогреть» jvm, производительность при первом запуске сильно ниже чем спустя некоторое время, т.к. классы ещё не загружены класслоадером и горячие точки не скомпилированы в машинный код jit компилятором. Для более правильной оценки, сделайте «бесконечный» цикл, в котором запускайте парсер, и выводите в консоль время работы парсера, затем ждите некоторое время, пока это число не стабилизируется.
P.P.P.S. Надеюсь время вы замеряете внутри программы (scala)?