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