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? 
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>

Reply via email to