On Sun, Nov 8, 2015 at 5:24 PM, Cristóvão Duarte Sousa
<cris...@gmail.com> wrote:
> The times for Julia code in my previous email are wrong, I wanted to write:
> 0.000126 seconds
> 0.004695 seconds (99.49 k allocations: 1.518 MB)
> 0.000871 seconds

FYI, I see a 25-40% performance improvement on my yyc/call-site-cache branch.

https://github.com/JuliaLang/julia/pull/11862

>
> On Sun, Nov 8, 2015 at 10:19 PM Cristóvão Duarte Sousa <cris...@gmail.com>
> wrote:
>>
>> I agree, in fact my knowledge about branch prediction mechanisms is rather
>> limited.
>> But doing if(rand()%2) instead of if(i%i) yields times close to the given
>> one. On the other hand, with a single type (with if(true)) the times drop to
>> around 320 μs.
>>
>> For julia code, randomness seems to have higher impact:
>> 0.000103 seconds
>> 0.002179 seconds
>> 0.000915 seconds
>> (again, these times highly variable)
>>
>> Anyway, I updated the codes to choose the type randomly.
>>
>> On Sun, Nov 8, 2015 at 3:44 AM Stefan Karpinski <ste...@karpinski.org>
>> wrote:
>>>
>>> Yeah, that's a good point.
>>>
>>> On Saturday, November 7, 2015, Gustavo Goretkin
>>> <gustavo.goret...@gmail.com> wrote:
>>>>
>>>> I think branch predictors on many platforms today use a table indexed on
>>>> the history of the last couple of branches, so the period-two cycle you 
>>>> have
>>>> is likely getting a lot of correct branch hits. If you mean to totally
>>>> defeat the branch prediction, I think you should use something 
>>>> pseudorandom.
>>>>
>>>> On Nov 6, 2015 12:27 PM, "Cristóvão Duarte Sousa" <cris...@gmail.com>
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I've been wondering how Julia dispatching system would compare to the
>>>>> C++ virtual functions dispatch one.
>>>>> Hence, I write a simple test in both Julia and C++ that measures the
>>>>> calling of a function over the elements of both an array of concrete 
>>>>> objects
>>>>> and another of abstract pointers to objects of derived types.
>>>>>
>>>>> Here is the code https://gist.github.com/cdsousa/f5d669fe3fba7cf848d8 .
>>>>>
>>>>> The usual timings for C++ in my machine, for the concrete and the
>>>>> abstract arrays respectively, are around
>>>>> 0.000143 seconds
>>>>> 0.000725 seconds
>>>>>
>>>>> For the Julia code the timings have much more variability, but they are
>>>>> around
>>>>> 0.000133 seconds
>>>>> 0.002414 seconds
>>>>>
>>>>> This shows that Julia (single) dispatch performance is not that bad
>>>>> while it has some room to improvement.
>>>>>
>>>>> If I'm doing something terribly wrong in these tests, please tell me :)
>>>>>
>>>>> PS: Thank you all, developers of Julia!
>>>>>
>>>>>
>

Reply via email to