Sorry, I used log in the earlier script. Now with a=2.0, C++ is only twice
as fast.
function f1()
a=2.0
for i=1:1000000
a+=exp(a%2+1);
end
a
end
@time f1()
elapsed time: 0.051447387 seconds (93896 bytes allocated)
On Wednesday, February 18, 2015 at 6:11:41 PM UTC-6, Peter Simon wrote:
>
> Not sure why this is, but when I replace 2 with 2.0 in the first line of
> the function it seems to speed up by a factor of 8.
>
> On Wednesday, February 18, 2015 at 3:48:15 PM UTC-8, Rohan Fernando wrote:
>>
>> Wrapped in function, but timing did not change.
>>
>> function f1()
>> a=2
>> for i=1:1000000
>> a+=log(a%2+1);
>> end
>> a
>> end
>> @time f1()
>>
>> output:
>>
>> elapsed time: 0.151813773 seconds (64080600 bytes allocated, 15.55% gc time)
>>
>>
>>
>> On Wednesday, February 18, 2015 at 5:19:21 PM UTC-6, Stefan Karpinski
>> wrote:
>>>
>>> Try wrapping the Julia code in a function and try again. The slow part
>>> is incrementing `a` not the exp.
>>>
>>>
>>> http://julia.readthedocs.org/en/latest/manual/performance-tips/#avoid-global-variables
>>>
>>> On Wed, Feb 18, 2015 at 6:15 PM, Rohan Fernando <[email protected]>
>>> wrote:
>>>
>>>> Here is the C++ code:
>>>>
>>>>
>>>> #include <iostream>
>>>>
>>>> #include <cmath>
>>>>
>>>>
>>>>
>>>> int main(int argc, const char * argv[]) {
>>>>
>>>>
>>>> srand (time(NULL));
>>>>
>>>>
>>>> clock_t t;
>>>>
>>>> int a=2;
>>>>
>>>> t = clock();
>>>>
>>>> for (unsigned i=0; i<1000000; i++) {
>>>>
>>>> //a+=(log(a));
>>>>
>>>> a+=exp(a%2);
>>>>
>>>> //a+=(rand()%2+1);
>>>>
>>>> }
>>>>
>>>>
>>>>
>>>> t = clock() - t;
>>>>
>>>> printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/
>>>> CLOCKS_PER_SEC);
>>>>
>>>> std::cout<<a<<std::endl;
>>>>
>>>> return 0;
>>>>
>>>> }
>>>>
>>>>
>>>> The output:
>>>>
>>>>
>>>> *It took me 22177 clicks (0.022177 seconds).*
>>>>
>>>> *2000001*
>>>>
>>>> Program ended with exit code: 0
>>>>
>>>> Julia Code:
>>>>
>>>> a=2
>>>> @time for i=1:1000000
>>>> a+=exp(a%2);
>>>> end
>>>>
>>>> ouput:
>>>>
>>>> elapsed time: 0.136568599 seconds (47999984 bytes allocated, 18.22% gc
>>>> time)
>>>>
>>>>
>>>>
>>>> Thanks.
>>>>
>>>> On Wednesday, February 18, 2015 at 4:56:40 PM UTC-6, Stefan Karpinski
>>>> wrote:
>>>>>
>>>>> How did you do the timing?
>>>>>
>>>>> On Wed, Feb 18, 2015 at 5:54 PM, Rohan Fernando <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> I ran both, Julia and C++, on Mac OS X 10.10.2.
>>>>>>
>>>>>> Is that the information you asked for?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> On Wednesday, February 18, 2015 at 2:32:23 PM UTC-6, Stefan Karpinski
>>>>>> wrote:
>>>>>>>
>>>>>>> Depends on how fast your system libm is – and how accurate. There's
>>>>>>> a tradeoff.
>>>>>>>
>>>>>>> On Wed, Feb 18, 2015 at 3:07 PM, Rohan Fernando <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The log and exponential functions in Julia are about five times
>>>>>>>> slower than in C++. Is this reasonable?
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>