Použijte funkce profilování kódu v R pro zlepšení výkonu

platí pro: SQL Server 2016 (13.x) a novější verze

Tento článek popisuje výkonnostní nástroje poskytované balíčky R pro získání informací o interních volaních funkcí. Tyto informace můžete využít ke zlepšení výkonu svého kódu.

Tip

Tento článek poskytuje základní zdroje, které vám pomohou začít. Pro odborné vedení doporučujeme sekci Performance v "Advanced R" od Hadley Wickham.

Použití RPROF

rprof je funkce obsažená v základním balíčku utils, která je načítána ve výchozím nastavení.

Obecně funkce rprof funguje tak, že se volací zásobník zapisuje do souboru v určených intervalech. Pak můžete použít summaryRprof tuto funkci ke zpracování výstupního souboru. Jednou z výhod rprof je, že provádí vzorkování, čímž snižuje výkonnostní zátěž spojenou s monitoringem.

Pro použití R profilování ve vašem kódu voláte tuto funkci a specifikujete její parametry, včetně názvu místa, kde je logovací soubor zapsán. Profilování lze zapínat a vypínat ve vašem kódu. Následující syntax ilustruje základní použití:

# Specify profiling output file.
varOutputFile <- "C:/TEMP/run001.log")
Rprof(varOutputFile)

# Turn off profiling
Rprof(NULL)
    
# Restart profiling
Rprof(append=TRUE)

Poznámka:

Použití této funkce vyžaduje, aby byl Windows Perl nainstalován na počítači, kde se kód spouští. Proto doporučujeme profilovat kód během vývoje v prostředí R a poté nasadit odladěný kód na SQL Server.

Funkce systému R

Jazyk R obsahuje mnoho základních funkcí balíčků pro vracení obsahu systémových proměnných. Například jako součást vašeho R kódu můžete použít Sys.timezone k získání aktuálního časového pásma nebo Sys.Time systémového času z R.

Pro získání informací o jednotlivých funkcích systému R zadejte název funkce jako argument k funkci R help() z příkazového řádku R.

help("Sys.time")

Ladění a profilování v R

Dokumentace pro Microsoft R Open, který je nainstalován ve výchozím nastavení, obsahuje manuál k vývoji rozšíření pro jazyk R, který podrobně rozebírá profilování a ladění.