Microsoft-R比SQL慢得多

时间:2017-11-20 11:35:49

标签: c# sql r microsoft-r

我正在使用sp_execute_external_script在Microsoft R中运行R脚本。我从C#调用它。但是我发现了这个问题,虽然它并不复杂,但它只能在6000行或多或少的情况下工作,需要7秒才能完成。因此我将脚本翻译为纯 SQL ,只需2-3秒(也来自C#)。所以,我检查了如下所示的性能,整个SP平均持续1.877秒,R脚本1.56(system.time)。所以我的问题是为什么会有这样的差异?老实说,我不明白为什么SQL应该没有那么多差异那么快。

declare @start datetime = getdate()

EXEC sp_execute_external_script 
    @input_data_1   = N'select * from table' -- only 6000 rows approx.
    @name           = N't', 
    @params         = N'',
    @rscript        = N'
        # my R script
        OutputDataSet <- data.frame(field1, field2)
    '
declare @executionTimeInMilliseconds int = datediff(ms, @start, getdate())

print @executionTimeInMilliseconds

1 个答案:

答案 0 :(得分:1)

从SQL本身调用SQL通常要快得多,因为它不需要任何上下文切换,也不需要额外的解析和调用其他进程。

到目前为止,SQL执行引擎已经过优化,以至于它自身以外的每一步都会变慢。我可以想象这也是这种情况。当然,小功能的开销远远高于长时间运行的功能,这可能会使您的指标出现偏差。