title: evaluate method takes long time - PMML models using Jpmml
body: <p>Today I am using Jpmml in order to load pmml models in my code. but the'evaluate' method takes long time. 
  Here is the working code today : </p>
  
  <pre><code>    String modelPath = "....";
      ModelEvaluatorFactory factory = ModelEvaluatorFactory.newInstance();
      InputStream in = new   ByteArrayInputStream(modelPath.getBytes("UTF-8"));
  
      PMML pmmlModel = JAXBUtil.unmarshalPMML(new StreamSource(in)); 
      ModelEvaluator&lt;?&gt; evaluator = factory.newModelManager(pmmlModel);
      List&lt;FieldName&gt; activeFields = evaluator.getActiveFields();
  
      Map&lt;FieldName, FieldValue&gt; defaultFeatures = new HashMap&lt;&gt;();
  
      //after filling the 'defaultFeatures' the line below takes long time
      Map&lt;FieldName, ?&gt; results = evaluator.evaluate(defaultFeatures);
  </code></pre>
  
  <p>PMML example :</p>
  
  <pre><code>    &lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
      &lt;PMML xmlns="http://www.dmg.org/PMML-4_2" version="4.2"&gt;
      &lt;Header&gt;
          &lt;Application name="JPMML-SkLearn" version="1.0-SNAPSHOT"/&gt;
          &lt;Timestamp&gt;2017-01-22T14:18:05Z&lt;/Timestamp&gt;
      &lt;/Header&gt;
      &lt;DataDictionary&gt;
          &lt;DataField name="GENDER" optype="categorical" dataType="string"&gt;
              &lt;Value value="0"/&gt;
              &lt;Value value="1"/&gt;
          &lt;/DataField&gt;
          &lt;DataField name="1GA_" optype="continuous" dataType="double"/&gt;
      //67000 rows of datafield
      &lt;/DataDictionary&gt;
      &lt;TransformationDictionary&gt;
          &lt;DefineFunction name="logit" optype="continuous" dataType="double"&gt;
              &lt;ParameterField name="value" optype="continuous" dataType="double"/&gt;
              &lt;Apply function="/"&gt;
                  &lt;Constant dataType="double"&gt;1&lt;/Constant&gt;
                  &lt;Apply function="+"&gt;
                      &lt;Constant dataType="double"&gt;1&lt;/Constant&gt;
                      &lt;Apply function="exp"&gt;
                          &lt;Apply function="*"&gt;
                              &lt;Constant dataType="double"&gt;-1&lt;/Constant&gt;
                              &lt;FieldRef field="value"/&gt;
                          &lt;/Apply&gt;
                      &lt;/Apply&gt;
                  &lt;/Apply&gt;
              &lt;/Apply&gt;
          &lt;/DefineFunction&gt;
      &lt;/TransformationDictionary&gt;
       &lt;MiningModel functionName="classification"&gt;
          &lt;MiningSchema&gt;
              &lt;MiningField name="GENDER" usageType="target"/&gt;
              &lt;MiningField name="1GA_"/&gt;
        //67000 rows of MiningField
         &lt;/MiningSchema&gt;
          &lt;Output&gt;
              &lt;OutputField name="probability_0" feature="probability" value="0"/&gt;
              &lt;OutputField name="probability_1" feature="probability" value="1"/&gt;
          &lt;/Output&gt;
          &lt;LocalTransformations&gt;
              &lt;DerivedField name="x1" optype="continuous" dataType="double"&gt;
                  &lt;FieldRef field="1GA_"/&gt;
              &lt;/DerivedField&gt;
         //100000 rows
          &lt;/LocalTransformations&gt;
           &lt;Segmentation multipleModelMethod="modelChain"&gt;
              &lt;Segment id="1"&gt;
                  &lt;True/&gt;
                  &lt;RegressionModel functionName="regression"&gt;
                      &lt;MiningSchema&gt;
                          &lt;MiningField name="1GA_"/&gt;
                    &lt;/MiningSchema&gt;
                      &lt;Output&gt;
                          &lt;OutputField name="decisionFunction_1"    feature="predictedValue"/&gt;
                          &lt;OutputField name="logitDecisionFunction_1" optype="continuous" dataType="double" feature="transformedValue"&gt;
                              &lt;Apply function="logit"&gt;
  &lt;FieldRef field="decisionFunction_1"/&gt;
                              &lt;/Apply&gt;
                          &lt;/OutputField&gt;
                      &lt;/Output&gt;
                      &lt;RegressionTable intercept="-5.303370169392045"&gt;
             &lt;NumericPredictor name="x1" coefficient="0.18476274186559316"/&gt;
            //100000 rows of NumericPredictor
  
        &lt;/RegressionTable&gt;
                   &lt;/RegressionModel&gt;
                &lt;/Segment&gt;
                &lt;Segment id="2"&gt;
                    &lt;True/&gt;
                  &lt;RegressionModel functionName="regression"&gt;
                      &lt;MiningSchema&gt;
                          &lt;MiningField name="logitDecisionFunction_1"/&gt;
                      &lt;/MiningSchema&gt;
                      &lt;Output&gt;
                          &lt;OutputField name="logitDecisionFunction_0"  
       feature="predictedValue"/&gt;
                      &lt;/Output&gt;
                      &lt;RegressionTable intercept="1.0"&gt;
              &lt;NumericPredictor name="logitDecisionFunction_1" 
  
             coefficient="-1.0"/&gt;
                          &lt;/RegressionTable&gt;
                      &lt;/RegressionModel&gt;
                  &lt;/Segment&gt;
                  &lt;Segment id="3"&gt;
                      &lt;True/&gt;
                      &lt;RegressionModel functionName="classification"&gt;
                          &lt;MiningSchema&gt;
                              &lt;MiningField name="GENDER" usageType="target"/&gt;
                              &lt;MiningField name="logitDecisionFunction_1"/&gt;
                              &lt;MiningField name="logitDecisionFunction_0"/&gt;
                          &lt;/MiningSchema&gt;
                          &lt;RegressionTable intercept="0.0" targetCategory="1"&gt;
                              &lt;NumericPredictor name="logitDecisionFunction_1" 
  
  
       coefficient="1.0"/&gt;
                      &lt;/RegressionTable&gt;
                  &lt;RegressionTable intercept="0.0" targetCategory="0"&gt;
                          &lt;NumericPredictor name="logitDecisionFunction_0"   
  
  
         coefficient="1.0"/&gt;
                          &lt;/RegressionTable&gt;
                      &lt;/RegressionModel&gt;
                  &lt;/Segment&gt;
           &lt;/Segmentation&gt;
          &lt;/MiningModel&gt;
          &lt;/PMML&gt;
  </code></pre>
  
  <p>There is a thought of trying to use MLlib instead of Jpmml.
  Any ideas?
  Thanks</p>