[Bioc-devel] S4 Method Slow Execution if Signature Has Multiple Class Unions

Michael Lawrence |@wrence@m|ch@e| @end|ng |rom gene@com
Tue Nov 23 20:48:27 CET 2021


Hi Dario,

Thanks for bringing this up. The second time speed could be explained
by the caching that happens inside the methods package. If you are
able to come up with a smaller reproducible example, I would be happy
to help out.

Michael

On Mon, Nov 22, 2021 at 1:00 PM Dario Strbenac via Bioc-devel
<bioc-devel using r-project.org> wrote:
>
> Good day,
>
> I created two constructor methods for a generic function. One is for the default empty constructor and the other is a constructor when any one or more parameters is specified by the user. The method signatures are:
>
> 1. c("missing", "missing", "missing", "missing", "missing", "missing", "missing", "missing"),
> 2. c("characterOrMissing", "numericOrMissing", "numericOrMissing", "numericOrMissing", "numericOrMissing", "characterOrMissing", "BiocParallelParamOrMissing", "numericOrMissing")
>
> The class unions are defined as you might expect.
>
> setClassUnion("characterOrMissing", c("character", "missing"))
> setClassUnion("numericOrMissing", c("numeric", "missing"))
> setClassUnion("BiocParallelParamOrMissing", c("BiocParallelParam", "missing"))
>
> The first method works as expected:
>
> > system.time(CrossValParams())
>    user  system elapsed
>   0.165   0.000   0.165
>
> The second takes over ten minutes and constantly uses 100% CPU usage, according to top.
>
> > system.time(CrossValParams("Leave-k-Out", leave = 2))
>    user  system elapsed
> 760.018  15.093 775.090
>
> Strangely, if I rerun this code again, it works quickly the second time.
>
> > system.time(CrossValParams("Leave-k-Out", leave = 2))
>    user  system elapsed
>   0.145   0.000   0.145
>
> I haven't been able to come up with a minimal reproducile example of the issue. How can this be done consistently and efficiently?
>
> --------------------------------------
> Dario Strbenac
> University of Sydney
> Camperdown NSW 2050
> Australia
> _______________________________________________
> Bioc-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel



-- 
Michael Lawrence
Principal Scientist, Director of Data Science and Statistical Computing
Genentech, A Member of the Roche Group
Office +1 (650) 225-7760
michafla using gene.com

Join Genentech on LinkedIn | Twitter | Facebook | Instagram | YouTube



More information about the Bioc-devel mailing list