How about this version:
public class Test
{
int foo(int n)
{
return n - 1;
}
void bar()
{
}
void baz()
{
}
final Exception e = new Exception("");
void run()
{
try
{
for (int i=0; i<3; ++i)
{
if (foo(i) == 0) throw e;
}
}
catch (Exception e2)
{
}
bar();
baz();
}
public static void main(String[] args)
{
Test t = new Test();
for (int n=0; n<10; ++n)
{
long start = System.currentTimeMillis();
for (int i=0; i<1000000; ++i)
//(new Test()).run();
t.run();
System.out.println(System.currentTimeMillis() - start);
}
}
}
On 4/22/08, Jon Harrop <[EMAIL PROTECTED]> wrote:
>
> On Tuesday 22 April 2008 18:45:28 Richard Warburton wrote:
> > Could you please provide the source code for this performance comparison.
>
>
> Sure. The Java:
>
> public class test
> {
> int foo(int n)
> {
> return n - 1;
> }
>
> void bar()
> {
> }
>
> void baz()
> {
> }
>
> void run()
> {
> Exception e = new Exception("");
> try
>
> {
> for (int i=0; i<3; ++i)
> {
>
> if (foo(i) == 0) throw e;
> }
> }
> catch (Exception e2)
> {
> }
> bar();
> baz();
> }
>
> public static void main(String[] args)
> {
> for (int n=0; n<10; ++n)
> {
> long start = System.currentTimeMillis();
> for (int i=0; i<1000000; ++i)
> (new test()).run();
> System.out.println(System.currentTimeMillis() - start);
> }
> }
> }
>
> The F# (for both techniques):
>
> #light
>
> let foo n = n-1
> let bar() = ()
> let baz() = ()
>
> exception StopIteration
>
> let run1() =
>
> try
> for n=0 to 2 do
> if foo n=0 then raise StopIteration
> with StopIteration ->
> ()
> bar()
> baz()
>
>
> let run2() =
>
> let rec run_1 n =
> if foo n=0 then run_2() else
>
> if n<3 then run_1(n+1) else run_2()
>
> and run_2() =
> bar()
> baz()
>
> run_1 0
>
> do
> let t = new System.Diagnostics.Stopwatch()
> t.Start()
> for i=1 to 1000000 do
> run1()
> printf "Exceptions: %dms\n" t.ElapsedMilliseconds
> t.Reset()
> t.Start()
> for i=1 to 1000000 do
> run2()
> printf "Tail calls: %dms\n" t.ElapsedMilliseconds
> stdin.ReadLine()
>
>
> --
> Dr Jon D Harrop, Flying Frog Consultancy Ltd.
> http://www.ffconsultancy.com/products/?e
>
> >
>
--
Venlig hilsen / Kind regards,
Christian Vest Hansen.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM
Languages" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---