Thanks!.
I was able to get the default scope from CompiledCode, but I am still
getting the same performance. Here is the latest code :
static void Main(string[] args)
{
ScriptRuntime runtime = Python.CreateRuntime();
ScriptEngine engine = Python.CreateEngine();
ScriptSource source =
engine.CreateScriptSourceFromFile("interpolate.py");
Console.WriteLine(DateTime.Now);
CompiledCode compiled = source.Compile();
compiled.Execute();
ScriptScope scope = compiled.DefaultScope;
Microsoft.Func<string, string, string, string, int, int> func =
scope.GetVariable<Microsoft.Func<string, string, string, string, int,
int>>("interpolate_start");
Console.WriteLine(func("3-day-data.txt", "3-day-output.txt",
"2008-01-01 00:00:21","2008-01-03 23:59:08",60).ToString());
Console.WriteLine(DateTime.Now);
Console.ReadLine();
}
This is the latest output :
11/12/2008 3:13:01 PM
WARNING: desired starting time (Tue Jan 01 00:00:21 2008) prior to time
of first
data point (Tue Jan 01 00:00:32 2008), current line: 9411
series: 3D
force==False, exiting..
0
11/12/2008 3:16:41 PM
Is there could be a problem on how I am calling the interpolation function?
I mean from python.exe I do something like this:
if __name__ == '__main__':
Interpolate('3-day-data.txt', '3-day-output-original.txt', '2008-01-01
00:00:
21', '2008-01-03 23:59:08', intvl=60, maxgap = 5, stacked = True, stackedCol
= 2
, tformat = '%Y-%m-%d %H:%M:%S', debug = False).start()
To be able to call the script from the DLR I have something like this:
def interpolate_start(inFile, outFile, startDate, endDate, intvl):
Interpolate(inFile, outFile,startDate,endDate,intvl, maxgap = 5, stacked
= Tr
ue, stackedCol = 2, tformat = '%Y-%m-%d %H:%M:%S', debug = False).start()
return 0
That's the only difference I found on how the script is called from python
and DLR.
Any comments?
regards,
wilfredo
On Wed, Nov 12, 2008 at 2:56 PM, Dino Viehland <[EMAIL PROTECTED]> wrote:
> CompiledCode exposes the default scope it executes in via the
> DefaultScope property. So hold onto the result of source.Compile and after
> executing the code you can grab the scope and use it to get your variable.
>
>
>
> *From:* [EMAIL PROTECTED] [mailto:
> [EMAIL PROTECTED] *On Behalf Of *Wilfredo Lugo
> *Sent:* Wednesday, November 12, 2008 10:25 AM
> *To:* Discussion of IronPython
>
> *Subject:* Re: [IronPython] Performance Issue
>
>
>
> Thanks.
>
>
>
> But then If I don't use my defined scope, how I could fill my function
> delegate?
>
>
>
> Right now I am using :
>
>
>
> Microsoft.Func<string, string, string, string, int, int> func =
> scope.GetVariable<Microsoft.Func<string, string, string, string, int,
> int>>("interpolate_start");
>
>
>
> If I use engine.GetVariables<Func<....>() I still need to pass a
> ScriptScope to it. How do I get the default scope (from ScriptEngine or
> ScriptSource) to be able to get the delegate?
>
>
>
> regards,
>
>
>
> wilfredo
>
> On Wed, Nov 12, 2008 at 2:01 PM, Dino Viehland <[EMAIL PROTECTED]>
> wrote:
>
> Instead of doing:
>
>
>
> ScriptScope scope = engine.CreateScope();
>
> Console.WriteLine(DateTime.Now);
>
> source.Execute(scope);
>
>
>
> do:
>
>
>
> source.Compile().Execute()
>
>
>
> and your code should then run in an optimized default scope for the code –
> just like it does at the command line.
>
>
>
> *From:* [EMAIL PROTECTED] [mailto:
> [EMAIL PROTECTED] *On Behalf Of *Wilfredo Lugo
> *Sent:* Wednesday, November 12, 2008 9:29 AM
> *To:* [email protected]
> *Subject:* Re: [IronPython] Performance Issue
>
>
>
>
>
> I run the script directly from ipy.exe and it basically behaves pretty
> similar to python.exe (it always took one second more, but I could live with
> that). Here is the output:
>
>
>
> $ date +%M:%S;./ipy.exe interpolate.py;date +%M:%S
>
> 17:36
>
> WARNING: desired starting time (Tue Jan 01 00:00:21 2008) prior to time of
> first
>
> data point (Tue Jan 01 00:00:32 2008), current line: 9411
>
> series: 3D
>
> force==False, exiting..
>
> 17:41
>
>
>
> So, the problem is on the DLR side. Any clues?
>
>
>
> -------------------------------------------------------------------------
>
> How does python.exe compare directly to ipy.exe? That is, try running
> "date +%M:%S;ipy.exe interpolate.py;date +%M:%S" instead of using the DLR
> hosting APIs.
>
> Thanks,
>
>
>
> Dave
>
> From: users-bounces at lists.ironpython.com
> <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>
> [mailto:users-bounces at lists.ironpython.com
> <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>] On Behalf Of
> Wilfredo Lugo
>
> Sent: Wednesday, November 12, 2008 8:32 AM
>
> To: users at lists.ironpython.com
> <http://lists.ironpython.com/listinfo.cgi/users-ironpython.com>
>
> Subject: [IronPython] Performance Issue
>
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com