673 Stimmen

Was ist der Unterschied zwischen require() und library()?

Was ist der Unterschied zwischen require() y library() ?

11voto

dsb Punkte 475

Meine anfängliche Theorie über den Unterschied war, dass library lädt die Pakete unabhängig davon, ob sie bereits geladen sind oder nicht, d.h. es kann ein bereits geladenes Paket neu laden, während require prüft nur, ob es geladen ist, oder lädt es, wenn es nicht geladen ist (daher die Verwendung in Funktionen, die auf ein bestimmtes Paket angewiesen sind). Die Dokumentation widerlegt dies jedoch und gibt ausdrücklich an, dass keine der beiden Funktionen ein bereits geladenes Paket neu lädt.

5voto

Shape Punkte 2832

Hier scheint der Unterschied bei einem bereits geladenen Paket zu liegen. Es ist zwar richtig, dass sowohl require als auch library das Paket nicht laden. Library macht eine Menge anderer Dinge, bevor es prüft und beendet wird.

Ich würde empfehlen, "require" vom Anfang einer Funktion zu entfernen, die ohnehin 2 Millionen Mal ausgeführt wird, aber wenn ich es aus irgendeinem Grund beibehalten müsste. require ist technisch eine schnellere Prüfung.

microbenchmark(req = require(microbenchmark), lib = library(microbenchmark),times = 100000)
Unit: microseconds
 expr    min     lq      mean median     uq        max neval
  req  3.676  5.181  6.596968  5.655  6.177   9456.006 1e+05
  lib 17.192 19.887 27.302907 20.852 22.490 255665.881 1e+05

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X