ほげにっき

hogedigoの日記

MVELすごい!

OGNLと文法が似ていたので、ちょっとコンバートして実行してみた。単純に速度が2倍になった。これは式評価以外の処理も含めて計測した結果なので、式評価だけだともっと差がついているものと思われる。


ただ一箇所どうにもひっかかることが。。。

        String expression = "foobar > 99 hoge orfjei ";
        
        Map vars = new HashMap();
        vars.put("foobar", new Integer(100));
        
        Boolean result = (Boolean) MVEL.executeExpression(
        		MVEL.compileExpression(expression), vars);

こんな感じでわざと滅茶苦茶な式を渡してみたが、trueが帰ってきた。どうも最初の"foobar > 99"だけ評価して、後は捨てている様だ。
文法的におかしかったら例外出して欲しいんだけど・・・。何か秘密があるのだろうか?