Andreas: You compare libopenlibm to the system libm

function test1()
           const N=10000000;
           @time begin
               s = 0.0
               for i=1:float(N)
                   s+= ccall((:sin,"libc"),Float64,(Float64,),i)
               end
               println(s)
           end
           @time begin
               s = 0.0
               for i=1:float(N)
                   s+= 
Base.nan_dom_err(ccall((:sin,"libopenlibm"),Float64,(Float64,),i),i)
               end
               println(s)
           end
           @time begin
               s::Float64 = 0.0
               for i=1:float(N)
                   s += sin(i)
               end
               println(s)
           end
       end
test1 (generic function with 1 method)

does not give a significant difference between the built in `sin` function 
and ccall.

Ivar


kl. 19:57:03 UTC+1 lørdag 1. mars 2014 skrev Andreas Noack Jensen følgende:
>
> But it is weird that if the definition from math.jl is added such that
>
> function test1()
>     const N=10000000;
>     @time begin
>         s = 0.0
>         for i=1:float(N)
>             s+= ccall((:sin,"libc"),Float64,(Float64,),i)
>         end
>         println(s)
>     end
>     @time begin
>         s = 0.0
>         for i=1:float(N)
>             s+= nan_dom_err(ccall((:sin,"libm"),Float64,(Float64,),i),i)
>         end
>         println(s)
>     end
>     @time begin
>         s::Float64 = 0.0
>         for i=1:float(N)
>             s += sin(i)
>         end
>         println(s)
>     end
> end
>
> I get
>
> julia> Newton.test1()
>
> 1.9558914085412562
> elapsed time: 0.437409166 seconds (136 bytes allocated)
> 1.9558914085412562
> elapsed time: 0.429992684 seconds (136 bytes allocated)
> 1.9558914085412367
> elapsed time: 2.495838008 seconds (136 bytes allocated)
>
>
>
> 2014-03-01 19:50 GMT+01:00 Ivar Nesje <[email protected] <javascript:>>:
> >
> > Why do you care for the performance of sin of big integers? I got about 
> 2 time difference with your test function, but when I did the test with 1.2 
> as the constant value to take sin of and got.
> >
> > julia> function test1()
> >            const N=10000000;
> >            @time begin
> >                s = 0.0
> >                for i=1:N
> >                    s+= ccall((:sin,"libc"),Float64,(Float64,),1.2) 
> >                end
> >                println(s)
> >            end
> >            @time begin
> >                s = 0.0
> >                for i=1:N
> >                    s += sin(1.2)
> >                end
> >                println(s)
> >            end
> >        end
> > test1 (generic function with 1 method)
> >
> > julia> test1()
> > 9.320390858253522e6
> > elapsed time: 1.071002334 seconds (168 bytes allocated)
> > 9.320390858253522e6
> > elapsed time: 0.930658493 seconds (168 bytes allocated)
> >
> >
> > It would be expected that the native sin function in Julia would be 
> slower than ccall to libc, because we check the return value to raise an 
> exception (instead of a NaN value).
> >
> > We also use openlibm for our math functions, and the performance of that 
> might be different from the libm on your system.
> >
> > Ivar
> >
> > kl. 18:53:39 UTC+1 lørdag 1. mars 2014 skrev Andrea Pagnani følgende:
> >>
> >> Dear all,
> >>
> >> julia's trigonometric functions seem to be almost 5 time slower than 
> their libc counterpart (at least on my MacBook Pro OS X 10.9.2):
> >>
> >> function test1()
> >>
> >>     const N=10000000;
> >>     @time begin
> >>         s = 0.0
> >>         for i=1:N
> >>             s+= ccall((:sin,"libc"),Float64,(Float64,),i) 
> >>         end
> >>         println(s)
> >>     end
> >>     @time begin
> >>         s = 0.0
> >>         for i=1:N
> >>             s += sin(i)
> >>         end
> >>         println(s)
> >>     end
> >> end
> >>
> >>
> >> If you run this simple code you obtain
> >>
> >> julia> test1()
> >> 1.9558914085412562
> >> elapsed time: 0.275374895 seconds (88 bytes allocated)
> >> 1.9558914085412367
> >> elapsed time: 1.567108143 seconds (88 bytes allocated)
> >> 1.9558914085412367
> >>
> >> The same behaviour is obtained with other trigonometric functions
> >> Is this something to be expected?
>
>
>
>
> --
> Med venlig hilsen
>
> Andreas Noack Jensen
>

Reply via email to