Was ist die Auswirkung, die eine Paket innerhalb einer Funktion, wenn das Paket bereits geladen ist?

Gibt es irgendwelche negativen Auswirkungen, einschließlich library/require Anweisungen innerhalb von Funktionen aufgerufen werden, sehr Häufig?

Die Zeit scheint eher negligble, aber ich bin dem Aufruf der Funktion alle paar Minuten und ich Frage mich, ob es irgendeinen Nachteil der repetitve require Anrufe?

beachten Sie, dass die Funktion nur eine persönliche util und wird nicht geteilt. dh, ich bin die einzige Hilfe

Übrigens keine Einsicht, warum library ist halb so langsam wie require? Ich hatte den Eindruck, Sie wurden gleichbedeutend.

  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
  • wenn Sie sind die einzige person, die ihn benutzt , Warum nicht zu entfernen, die erfordern, dass/library und nennen es außerhalb der Funktion? taht ' s sagte, Innerhalb einer Funktion, die ich benutzen würde require denn es gibt eine Warnung, kein Fehler.
  • Würde der speed-Unterschied zu tun haben, mit library unsichtbar Rückgabe einer Liste der verfügbaren Pakete, während require gibt nur eine logische TRUE/FALSE? Ich habe gerade gelesen, dass in ?library aus, bin aber kein Experte auf diesem Thema.
  • Es ist schlechte Praxis zu verwenden library() oder require() innerhalb einer Funktion, weil es macht es schwer zu sagen, welche Pakete muss der code. Sie sollten entweder außerhalb oder in der Paket-BESCHREIBUNG. Ich würde nicht so viele sorgen über die Auswirkungen auf die Leistung (und wenn Sie haben microbenchmark gibt Ihnen bessere Daten zu gehen).
Schreibe einen Kommentar