Something is going on with the type inference of backslash, e.g. see

(@code_typed rand(3,3)\rand(3))[1].args[3]

But I can't figure out what. Issue filed:
https://github.com/JuliaLang/julia/issues/9191.

On Fri, Nov 28, 2014 at 11:51 AM, Emerson Vitor Castelani <
[email protected]> wrote:

> Hi Stefan. I am very grateful by your attention. Each variable typed
> correctly doesn't change the perfomance. Do you have other suggestion to me?
>
> Thanks,
>
> -Emerson
>
> Em quarta-feira, 26 de novembro de 2014 17h52min57s UTC-2, Stefan
> Karpinski escreveu:
>>
>> I wonder if \ might be type unstable.
>>
>> On Wed, Nov 26, 2014 at 2:49 PM, Stefan Karpinski <[email protected]>
>> wrote:
>>
>>> It turns out that doesn't actually matter but there are other unrelated
>>> ill-typed variables in the code:
>>>
>>> Xb, o, y, r, e, Nj, ind, q, t
>>>
>>>
>>> I haven't determined why this is happening, but something is ill-typed
>>> here.
>>>
>>> On Wed, Nov 26, 2014 at 1:20 PM, Tim Holy <[email protected]> wrote:
>>>
>>>> Stefan's point is more relevant than you realize; if the type of the
>>>> variable
>>>> is uncertain, the loop will be very slow. You can make that resize
>>>> operation a
>>>> separate function, from which you call your main routine.
>>>>
>>>> --Tim
>>>>
>>>> On Wednesday, November 26, 2014 09:26:35 AM Emerson Vitor Castelani
>>>> wrote:
>>>> > Humm, It's useful but I guess that the problem is something in loop
>>>> while...
>>>> >
>>>> > Em quarta-feira, 26 de novembro de 2014 15h05min03s UTC-2, Stefan
>>>> Karpinski
>>>> >
>>>> > escreveu:
>>>> > > I'm not sure if this is the problem, but changing the type of a
>>>> variable
>>>> > > in a function body causes problems for type inference. For that
>>>> reason,
>>>> > > the
>>>> > > first two lines of this code may cause performance issue if you
>>>> call this
>>>> > > with b and c as matrices. A more Julian idiom for this is to do
>>>> something
>>>> > > like this:
>>>> > >
>>>> > > function simplex(A::Matrix, b::Vector, c::Vector)
>>>> > >
>>>> > >     (m,n) = size(A);
>>>> > >     ...
>>>> > >
>>>> > > end
>>>> > > simplex(A::Matrix, b::Matrix, c::Matrix) = simplex(A, vec(b),
>>>> vec(c))
>>>> > >
>>>> > >
>>>> > > This also avoids copying the data of b and c needlessly.
>>>> > >
>>>> > > On Wednesday, November 26, 2014, Emerson Vitor Castelani <
>>>> > >
>>>> > > [email protected] <javascript:>> wrote:
>>>> > >> Have you considered the example scsd8.mat?
>>>> > >>
>>>> > >> Em quarta-feira, 26 de novembro de 2014 14h39min14s UTC-2, Pileas
>>>> > >>
>>>> > >> escreveu:
>>>> > >>> Result with tic() toc() at the very beginning and at the very end:
>>>> > >>>
>>>> > >>> elapsed time: 0.025719973 seconds
>>>> > >>>
>>>> > >>>
>>>> > >>> Τη Τετάρτη, 26 Νοεμβρίου 2014 11:06:26 π.μ. UTC-5, ο χρήστης
>>>> Emerson
>>>> > >>>
>>>> > >>> Vitor Castelani έγραψε:
>>>> > >>>> Well, I am tried to implement a simple version of simplex in
>>>> Julia and
>>>> > >>>> I have had some troubles. In Julia, my algorithm spends about 30
>>>> sec
>>>> > >>>> and in
>>>> > >>>> matlab/octave 3 sec for the same problem. So, I saw some tips in
>>>> order
>>>> > >>>> to
>>>> > >>>> get a better performance but the best that I got in Julia was
>>>> 17-20
>>>> > >>>> sec.
>>>> > >>>> The codes are in attachment. I am new in Julia and the
>>>> algorithms are
>>>> > >>>> little roughly implemented but they are very similar.
>>>> > >>>>
>>>> > >>>> Thanks
>>>>
>>>>
>>>
>>

Reply via email to