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. 
>
>

Reply via email to