[Rcpp-devel] Question on performance

Kyle Baron kyleb at metrumrg.com
Mon Sep 24 15:48:45 CEST 2018


Here's an updated version of the Rcpp code with a single call:
https://github.com/jesusfv/Comparison-Programming-Languages-Economics/compare/master...kylebmetrum:master

The comparison runs are here:
https://github.com/kylebmetrum/Comparison-Programming-Languages-Economics/issues/1

For typical a single run ....

Original Rcpp: 2.762
New Rcpp: 0.878
testclang: 0.686582


Original Rcpp / testclang: 4.026239
New Rcpp / testclang: 1.279883

Moving sourceCpp was a big improvement as suggested.  Also, changing from
parens to brackets to access NumericVector sped things up.  And some
improvement too from re-factoring so that there was just a
single call to the compiled code.

Kyle



On Mon, Sep 24, 2018 at 2:24 AM Iñaki Ucar <iucar at fedoraproject.org> wrote:

>
>
> El dom., 23 sept. 2018 13:01, Iñaki Ucar <iucar at fedoraproject.org>
> escribió:
>
>> Also you can try adding
>>
>> // [[Rcpp::plugins(unwindProtect)]]
>>
>> to InsideLoop.cpp. That should boost the performance too with the
>> latest version of Rcpp.
>>
>
> Taking a look now, and I realize there are just calls to C++, not to R.
> So, please, forget about what I've said. The dangers of skimming through
> code in a mobile device and speaking too soon.
>
> Iñaki
>
>
>> Iñaki
>
>
>> El dom., 23 sept. 2018 a las 12:46, Kyle Baron (<kyleb at metrumrg.com>)
>> escribió:
>> >
>> >
>> > I got mOutput mixed up with mResults in the last message; it mResults
>> that gets created up front and then every iteration.
>> >
>> >
>> https://github.com/jesusfv/Comparison-Programming-Languages-Economics/blob/master/RBC_Rcpp.R#L45
>> >
>> https://github.com/jesusfv/Comparison-Programming-Languages-Economics/blob/master/InsideLoop.cpp#L12
>> >
>> >
>> >
>> >
>> >
>> > On Sun, Sep 23, 2018 at 5:38 AM Kyle Baron <kyleb at metrumrg.com> wrote:
>> >>
>> >>
>> >> It seems like the sourceCpp thing is the biggie.  That dropped about a
>> second of the time from something like 2.7 to 1.7 seconds
>> >>
>> >> They also create mOutput and then re-create it every time it goes into
>> InsideLoop
>> >>
>> https://github.com/jesusfv/Comparison-Programming-Languages-Economics/blob/master/RBC_Rcpp.R#L41
>> >>
>> https://github.com/jesusfv/Comparison-Programming-Languages-Economics/blob/master/InsideLoop.cpp#L12
>> >>
>> >> I just passed mOutput into InsideLoop and modified it there
>> >>
>> https://github.com/kylebmetrum/Comparison-Programming-Languages-Economics/commit/89015a72a0cf673739e83e38d4a545db4886b879
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> On Sat, Sep 22, 2018 at 1:21 PM Dirk Eddelbuettel <edd at debian.org>
>> wrote:
>> >>>
>> >>>
>> >>> On 22 September 2018 at 12:36, Michael Weylandt wrote:
>> >>> | I don't have time right now, but the offending line is here:
>> >>> |
>> >>> |
>> https://github.com/jesusfv/Comparison-Programming-Languages-Economics/blob/master/RBC_Rcpp.R#L62
>> >>> |
>> >>> | which calls `sourceCpp` repeatedly on each loop iteration.
>> >>> |
>> >>> | Should be a one line change to move it outside the loop and
>> un-sully the
>> >>> | good name of Rcpp.
>> >>>
>> >>> Nice catch!!  You should _definitely_ send him a PR. I also suggest
>> to move
>> >>> the sourceCpp() outside the timed segment as I do not think he
>> accounts for
>> >>> compilation in the other approaches (eg C++).
>> >>>
>> >>> Dirk
>> >>>
>> >>> --
>> >>> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>> >>> _______________________________________________
>> >>> Rcpp-devel mailing list
>> >>> Rcpp-devel at lists.r-forge.r-project.org
>> >>>
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>> >>
>> >>
>> >>
>> >>
>> > _______________________________________________
>> > Rcpp-devel mailing list
>> > Rcpp-devel at lists.r-forge.r-project.org
>> > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>>
>>
>>
>> --
>> Iñaki Ucar
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20180924/f3546e2f/attachment.html>


More information about the Rcpp-devel mailing list