
 Originariamente inviata da 
jabjoint
					 
				 
				Buonasera a tutti,
Ho provato a fare un confronto tra un programma creato da me ed uno ben noto: il "
Nashorn".
Non so se posso ottimizzare il mio Algoritmo:
- Infatti esso richiama ricorsivamente il 
costruttore, e dai fatti, ossia dai tempi calcolati risulta ben più rapido per poche   operazioni, ma ben più lento quando le operazioni aumentano (cicli for/while)
Ecco qui ad esempio, un confronto quasi equo per un valore di circa 50 cicli:
Se i cicli son minori, il mio algoritmo è più veloce ma nella situazione più conveniente di maggior numero(>50) inizia a decrescere in favore del Nashorn.
 
 
	codice:
	  package run;
   import javax.script.Bindings;
 import javax.script.ScriptEngine;
 import javax.script.ScriptException;
  import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
  import expression.*;
   publicclass Run {
  publicstaticvoid main(String[] args) {
 
 
         NashornScriptEngineFactory nse = new NashornScriptEngineFactory();
 
         ScriptEngine s = nse.getScriptEngine("Nashorn");
 
         String expression = "10.6*(x - 15.0)*(x - 14.9)*(x - 14.8)/((15.2 - 15.0)*(15.2 - 14.9)*(15.2 - 14.8))+20.6*(x - 15.0)*(x - 14.9)*(x - 14.8)/((5.2 - 15.0)*(5.2 - 14.9)*(15.2 - 14.8))";
 
         Bindings b = s.createBindings();
 
         Object result = null;
 
 try {                    
 
  longtimeX = System.currentTimeMillis();
 
 for(intx=0; x<5; x++) {
 
 b.put("x", x);
 
 result = s.eval(expression, b);
 
             }
 
             System.out.println(result);
 
 longtimeY = System.currentTimeMillis();
 
 longdt = timeY-timeX;
 
               System.out.println("Tempo impiegato: " + dt);
 
 
 
         } catch (ScriptException e) {
 
 e.printStackTrace();
 
         }
 
 longtimeX = System.currentTimeMillis();
 
         ValuteExpression ve = new ValuteExpression(expression);
 
 ve.setVariable("x");
 
 
 for(intx=0; x<5; x++) {
 
 ve.put(x);
 
 result = ve.solveExp();
 
         }
 
         System.out.println(result);
 
 longtimeY = System.currentTimeMillis();
 
 longdt = timeY-timeX;        
  
           System.out.println("Tempo impiegato: " + dt);
     }
  }
 
 
 
 
 
Concludo che ricreare una risorsa come una classe(ricorsione) consuma molto, o sono altre qui le motivazioni?
Avete idee per migliorare?