One important thing to note is that if you do a + b at the top level, it
won't be fast.
But as soon as you do a + b inside a function, it will be as fast as C.
For example
a = 20
b = 10
for i = 1:1000000000
c = a + b
end
takes about 34s
But the following is almost instantaneous:
function doit()
a = 20
b = 10
for i = 1:1000000000
c = a + b
end
end
doit()
On Tuesday, 24 February 2015 14:03:07 UTC+1, Tim Holy wrote:
>
> Giovanni,
>
> Before you start going to that kind of effort, take a look at
>
> julia> @code_native 3+5
> .text
> Filename: int.jl
> Source line: 12
> push RBP
> mov RBP, RSP
> Source line: 12
> add RDI, RSI
> mov RAX, RDI
> pop RBP
> ret
>
> I think you're going to have a pretty hard time finding a C compiler that
> does
> better than this :-). Especially since it gets inlined at the call site.
>
> Best,
> --Tim
>
> On Tuesday, February 24, 2015 01:13:52 AM [email protected]
> <javascript:> wrote:
> > Hello,
> >
> > I am a beginner to Julia and would like to try out some features. I
> would
> > like to improve performances of some bottleneck functions by translating
> > them into C.
> > A simple example is :
> > main.jl
> >
> > a ::Int64 = 20
> > b ::Int64 = 10
> > ccall(:do_sum, Int64, (Int64, Int64), a, b)
> >
> >
> >
> > test.c
> > #include <stdio.h>
> >
> > int do_sum (int a,int b)
> > {
> > int c;
> > c = a+b;
> > printf("f\n:",c);
> > return c;
> > }
> >
> > where should I put the C file ?
> >
> > Thanks,
> > G.
>
>