From: Santosh T. <ti...@gm...> - 2010-12-15 20:31:12
|
Hello, I am using the method public void exec(String s) from the class org.python.util.PythonInterpreter to evaluate user provided expressions in my java application. After having profiled my application, I figured this method takes a noticeable amount of time to execute. What recommendations do you have to make the execution faster? I basically pass the user provided source code to the jython engine, and then fetch the relevant key-value pairs. Any pointers about using the jython engine more efficiently would be helpful. Thanks, -- Santosh Tiwari ti...@gm... |
From: Stefan Sonnenberg-C. <ste...@py...> - 2010-12-15 21:20:41
|
Am 15.12.2010 21:31, schrieb Santosh Tiwari: > > Hello, > > I am using the method > > public void exec(String s) > > from the class > > org.python.util.PythonInterpreter > > to evaluate user provided expressions in my java application. > > After having profiled my application, I figured this method takes a > noticeable amount of time to execute. > > What recommendations do you have to make the execution faster? > > I basically pass the user provided source code to the jython engine, > and then fetch the relevant key-value pairs. > > Any pointers about using the jython engine more efficiently would be > helpful. > > Thanks, > > -- > Santosh Tiwari > ti...@gm... <mailto:ti...@gm...> > > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users First invocation can/should be slow. Jython 2.5.2b2 (Release_2_5_2beta2:7124, Sep 14 2010, 00:11:45) [Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_22 Type "help", "copyright", "credits" or "license" for more information. >>> from time import clock >>> from org.python.util import PythonInterpreter >>> i = PythonInterpreter() >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.010172242 >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.009454553 >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.008971252 >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.037568462 >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.008597741 >>> start = clock() ; i.exec('print 42+0') ; print clock()-start 42 0.011106998 >>> start = clock() ; i.exec('print 7*7-5') ; print clock()-start 44 0.009157309 >>> start = clock() ; i.exec('print 7*7-7') ; print clock()-start 42 0.007693715 start = clock() ; i.exec('print 7*7-7') ; print clock()-start 42 0.007243937 It would be nice to see the code you are particular using, and perhaps a sample of the python expression you tried. Short scripts can run longer, even :-) |
From: Jeff E. <jem...@fr...> - 2010-12-15 22:10:48
|
If you pass the same source string multiple times you can amortize the cost of compiling by compiling the source once and passing it to the exec(PyObject) method. Santosh Tiwari wrote: > > Hello, > > I am using the method > > public void exec(String s) > > from the class > > org.python.util.PythonInterpreter > > to evaluate user provided expressions in my java application. > > After having profiled my application, I figured this method takes a > noticeable amount of time to execute. > > What recommendations do you have to make the execution faster? > > I basically pass the user provided source code to the jython engine, > and then fetch the relevant key-value pairs. > > Any pointers about using the jython engine more efficiently would be > helpful. > > Thanks, > > -- > Santosh Tiwari > ti...@gm... <mailto:ti...@gm...> > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > ------------------------------------------------------------------------ > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users > |
From: Santosh T. <ti...@gm...> - 2010-12-16 15:30:29
|
Great suggestion. Thanks. I tried what you said. I am encountering the following problem. Here is my scenario. I am using the same jython interpreter object to evaluate different set of user-provided equations (each set is about 50 lines of python code). User provides the input values (for variables) in a table, and I generate the python source code as follows. Suppose 'x' is input and 'y' is output. User-provided equation is 'y = x' and user set an initial value for variable 'x' to be 1.0 I pass the following equation to jython. x = 1.0; y = x; Ofcourse, the first line will change as the input value 'x' changes. What should I do to set the appropriate values for the input variables, so that my equations get evaluated correctly. Thanks again for the suggestion. On Wed, Dec 15, 2010 at 5:10 PM, Jeff Emanuel <jem...@fr...> wrote: > > If you pass the same source string multiple times > you can amortize the cost of compiling by compiling > the source once and passing it to the exec(PyObject) > method. > > > Santosh Tiwari wrote: > >> >> Hello, >> >> I am using the method >> >> public void exec(String s) >> >> from the class >> >> org.python.util.PythonInterpreter >> >> to evaluate user provided expressions in my java application. >> >> After having profiled my application, I figured this method takes a >> noticeable amount of time to execute. >> >> What recommendations do you have to make the execution faster? >> >> I basically pass the user provided source code to the jython engine, and >> then fetch the relevant key-value pairs. >> >> Any pointers about using the jython engine more efficiently would be >> helpful. >> >> Thanks, >> >> -- >> Santosh Tiwari >> ti...@gm... <mailto:ti...@gm...> >> >> ------------------------------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> Lotusphere 2011 >> Register now for Lotusphere 2011 and learn how >> to connect the dots, take your collaborative environment >> to the next level, and enter the era of Social Business. >> http://p.sf.net/sfu/lotusphere-d2d >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Jython-users mailing list >> Jyt...@li... >> https://lists.sourceforge.net/lists/listinfo/jython-users >> >> > -- Santosh Tiwari ti...@gm... |
From: Jeff E. <jem...@fr...> - 2010-12-16 16:08:39
|
interp.set("x",1) interp.exec(compiledCode) Santosh Tiwari wrote: > > Great suggestion. Thanks. > > I tried what you said. I am encountering the following problem. > > Here is my scenario. > > I am using the same jython interpreter object to evaluate different > set of user-provided equations (each set is about 50 lines of python > code). > > User provides the input values (for variables) in a table, and I > generate the python source code as follows. > > Suppose 'x' is input and 'y' is output. > > User-provided equation is 'y = x' > > and user set an initial value for variable 'x' to be 1.0 > > I pass the following equation to jython. > > x = 1.0; > y = x; > > Ofcourse, the first line will change as the input value 'x' changes. > What should I do to set the appropriate values for the input > variables, so that my equations get evaluated correctly. > > > > Thanks again for the suggestion. > > > > On Wed, Dec 15, 2010 at 5:10 PM, Jeff Emanuel <jem...@fr... > <mailto:jem...@fr...>> wrote: > > > If you pass the same source string multiple times > you can amortize the cost of compiling by compiling > the source once and passing it to the exec(PyObject) > method. > > > Santosh Tiwari wrote: > > > Hello, > > I am using the method > > public void exec(String s) > > from the class > > org.python.util.PythonInterpreter > > to evaluate user provided expressions in my java application. > > After having profiled my application, I figured this method > takes a noticeable amount of time to execute. > > What recommendations do you have to make the execution faster? > > I basically pass the user provided source code to the jython > engine, and then fetch the relevant key-value pairs. > > Any pointers about using the jython engine more efficiently > would be helpful. > > Thanks, > > -- > Santosh Tiwari > ti...@gm... <mailto:ti...@gm...> > <mailto:ti...@gm... <mailto:ti...@gm...>> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > ------------------------------------------------------------------------ > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > <mailto:Jyt...@li...> > https://lists.sourceforge.net/lists/listinfo/jython-users > > > > > > -- > Santosh Tiwari > ti...@gm... <mailto:ti...@gm...> > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > ------------------------------------------------------------------------ > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users > |
From: Santosh T. <ti...@gm...> - 2010-12-17 17:53:22
|
It works. :) Now Jython's "exec" method call is no more the time consuming part of my application. Thanks. On Thu, Dec 16, 2010 at 11:08 AM, Jeff Emanuel <jem...@fr...> wrote: > > interp.set("x",1) > interp.exec(compiledCode) > > Santosh Tiwari wrote: > >> >> Great suggestion. Thanks. >> >> I tried what you said. I am encountering the following problem. >> >> Here is my scenario. >> >> I am using the same jython interpreter object to evaluate different set of >> user-provided equations (each set is about 50 lines of python code). >> >> User provides the input values (for variables) in a table, and I generate >> the python source code as follows. >> >> Suppose 'x' is input and 'y' is output. >> >> User-provided equation is 'y = x' >> >> and user set an initial value for variable 'x' to be 1.0 >> >> I pass the following equation to jython. >> >> x = 1.0; >> y = x; >> >> Ofcourse, the first line will change as the input value 'x' changes. What >> should I do to set the appropriate values for the input variables, so that >> my equations get evaluated correctly. >> >> >> >> Thanks again for the suggestion. >> >> >> >> On Wed, Dec 15, 2010 at 5:10 PM, Jeff Emanuel <jem...@fr... <mailto: >> jem...@fr...>> wrote: >> >> >> If you pass the same source string multiple times >> you can amortize the cost of compiling by compiling >> the source once and passing it to the exec(PyObject) >> method. >> >> >> Santosh Tiwari wrote: >> >> >> Hello, >> >> I am using the method >> >> public void exec(String s) >> >> from the class >> >> org.python.util.PythonInterpreter >> >> to evaluate user provided expressions in my java application. >> >> After having profiled my application, I figured this method >> takes a noticeable amount of time to execute. >> >> What recommendations do you have to make the execution faster? >> >> I basically pass the user provided source code to the jython >> engine, and then fetch the relevant key-value pairs. >> >> Any pointers about using the jython engine more efficiently >> would be helpful. >> >> Thanks, >> >> -- Santosh Tiwari >> ti...@gm... <mailto:ti...@gm...> >> <mailto:ti...@gm... <mailto:ti...@gm...>> >> >> >> >> ------------------------------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> Lotusphere 2011 >> Register now for Lotusphere 2011 and learn how >> to connect the dots, take your collaborative environment >> to the next level, and enter the era of Social Business. >> http://p.sf.net/sfu/lotusphere-d2d >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Jython-users mailing list >> Jyt...@li... >> <mailto:Jyt...@li...> >> >> https://lists.sourceforge.net/lists/listinfo/jython-users >> >> >> >> >> -- >> Santosh Tiwari >> ti...@gm... <mailto:ti...@gm...> >> ------------------------------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> Lotusphere 2011 >> Register now for Lotusphere 2011 and learn how >> to connect the dots, take your collaborative environment >> to the next level, and enter the era of Social Business. >> http://p.sf.net/sfu/lotusphere-d2d >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Jython-users mailing list >> Jyt...@li... >> https://lists.sourceforge.net/lists/listinfo/jython-users >> >> > -- Santosh Tiwari ti...@gm... |