Was ist der Unterschied zwischen require()
y library()
?
Antworten
Zu viele Anzeigen?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.
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
- See previous answers
- Weitere Antworten anzeigen