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]
> <javascript:>> 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?
>>>>>>
>>>>>
>>>>>
>>>
>