Ci sono degli effetti negativi sull'inclusione delle istruzioni library
/require
all'interno di funzioni che verranno chiamate molto frequentemente?Qual è l'impatto di richiedere un pacchetto all'interno di una funzione se il pacchetto è già stato caricato?
Il tempo utilizzato sembra piuttosto trascurabile, ma sto chiamando la funzione ogni pochi minuti e mi chiedo se non vi è alcun svantaggio per le chiamate ripetute require
?
nota che la funzione è solo un utile personale e non viene condivisa. cioè, io sono l'unico che lo usa
Per inciso, qualsiasi intuizione sul motivo per cui library
è mezzo lento come require
? Avevo l'impressione che fossero sinonimi.
WithREQUIRE <- function(x) {
require(stringr)
str_detect(x, "hello")
}
WithLIBRARY <- function(x) {
library(stringr)
str_detect(x, "hello")
}
Without <- function(x) {
str_detect(x, "hello")
}
x <- "goodbye"
library(rbenchmark)
benchmark(WithREQUIRE(x), WithLIBRARY(X), Without(x), replications=1e3, order="relative")
# test replications elapsed relative user.self sys.self
# Without(x) 1000 0.592 1.000 0.262 0.006
# WithREQUIRE(x) 1000 0.650 1.098 0.295 0.015
# WithLIBRARY(X) 1000 1.359 2.296 0.572 0.024
se sei l'unica persona che lo utilizza, perché non rimuovere richiedere/biblioteca e lo chiamano fuori della funzione? ho detto, all'interno di una funzione userei 'require' perché restituisce un avviso non un errore – agstudy
La differenza di velocità ha a che fare con' library' che restituisce in modo invisibile un elenco di pacchetti disponibili mentre 'require' restituisce un valore logico' TRUE/FALSE'? Ho appena letto in '? Library', ma non sono esperto su questo argomento. – thelatemail
È una pratica sbagliata usare' library() 'o' require() 'all'interno di una funzione, perché rende difficile dire quali sono i codici dei pacchetti necessari. Dovrebbero essere ou tside o nella confezione DESCRIZIONE. Non mi preoccuperei molto delle implicazioni in termini di prestazioni (e se hai fatto "microbenchmark" fornisci dati migliori per andare avanti). – hadley