Re: [julia-users] Re: Performance regression with latest master?

2016-03-19 Thread Kristoffer Carlsson
ref https://github.com/JuliaLang/julia/issues/15541

Re: [julia-users] Re: Performance regression with latest master?

2016-03-19 Thread 'Bill Hart' via julia-users
I can only partially bisect.

The regression happens between:

75fc9104ee24 (more recent)

and

dc6b0de80550 (older)

But few of the intervening commits actually build, so I can't refine it
further. There's something like 40 commits in that range.

Bill.

On 16 March 2016 at 18:28, Kristoffer Carlsson 
wrote:

> Can you bisect to the right commit?
>
> You can create a julia script that runs "exit(1)" on a bad commit and "
> exit(0)" on a good commit.
>
> Then create a bisect_runner.sh with
>
> make || exit 125
>
> julia -e 'include("test_script.jl")'
>
> and then do a bisect run ./bisect_runner.sh after having marked a good
> and bad commit.
>
>
>
> On Wednesday, March 16, 2016 at 5:25:11 PM UTC+1, Bill Hart wrote:
>>
>> We are seeing a performance regression with a factor of 1.5 or 2.0
>> (depending on machine) for the following simple C interface code between
>> 0.4.2 and today's master (not sure where the problem initially showed up,
>> but within the last 50 days):
>>
>> import Base: +
>>
>> typealias ZZ Array{UInt, 1}
>>
>> function +(a::ZZ, b::Int)
>>r = ZZ(length(a))
>>ccall((:__gmpn_add_1, :libgmp), Void, (Ptr{UInt}, Ptr{UInt}, Int,
>> Int), r, a, 3, b)
>>return r
>> end
>>
>> function doit(n::Int)
>>a = ZZ(3)
>>a[1] = rand(UInt)
>>a[2] = rand(UInt)
>>a[3] = rand(UInt)
>>
>>for s = 1:n
>>   a += s
>>end
>>
>>return a
>> end
>>
>> doit(10)
>>
>>
>> I realise the example is not mathematically very meaningful, nor is it
>> the best way to compute anything in particular. It's cut down from a larger
>> example to illustrate the performance regression clearly.
>>
>> Bill.
>>
>>


Re: [julia-users] Re: Performance regression with latest master?

2016-03-18 Thread 'Bill Hart' via julia-users
It's actually a regression of more than a factor of 2 on the machine I'm 
using.

I'll try to further refine the commit range by hand today.

Bill.

On Wednesday, 16 March 2016 20:45:00 UTC+1, Bill Hart wrote:
>
> I can only partially bisect.
>
> The regression happens between:
>
> 75fc9104ee24 (more recent)
>
> and
>
> dc6b0de80550 (older)
>
> But few of the intervening commits actually build, so I can't refine it 
> further. There's something like 40 commits in that range.
>
> Bill.
>
> On 16 March 2016 at 18:28, Kristoffer Carlsson  
> wrote:
>
>> Can you bisect to the right commit?
>>
>> You can create a julia script that runs "exit(1)" on a bad commit and "
>> exit(0)" on a good commit.
>>
>> Then create a bisect_runner.sh with
>>
>> make || exit 125
>>
>> julia -e 'include("test_script.jl")'
>>
>> and then do a bisect run ./bisect_runner.sh after having marked a good 
>> and bad commit.
>>
>>
>>
>> On Wednesday, March 16, 2016 at 5:25:11 PM UTC+1, Bill Hart wrote:
>>>
>>> We are seeing a performance regression with a factor of 1.5 or 2.0 
>>> (depending on machine) for the following simple C interface code between 
>>> 0.4.2 and today's master (not sure where the problem initially showed up, 
>>> but within the last 50 days):
>>>
>>> import Base: +
>>>
>>> typealias ZZ Array{UInt, 1}
>>>
>>> function +(a::ZZ, b::Int)
>>>r = ZZ(length(a))
>>>ccall((:__gmpn_add_1, :libgmp), Void, (Ptr{UInt}, Ptr{UInt}, Int, 
>>> Int), r, a, 3, b)
>>>return r
>>> end
>>>
>>> function doit(n::Int)
>>>a = ZZ(3)
>>>a[1] = rand(UInt)
>>>a[2] = rand(UInt)
>>>a[3] = rand(UInt)
>>>
>>>for s = 1:n
>>>   a += s
>>>end
>>>
>>>return a
>>> end
>>>
>>> doit(10)
>>>
>>>
>>> I realise the example is not mathematically very meaningful, nor is it 
>>> the best way to compute anything in particular. It's cut down from a larger 
>>> example to illustrate the performance regression clearly.
>>>
>>> Bill.
>>>
>>>
>