迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

解读 R 中 system.time 函数的输出

作者:迹忆客 最近更新:2023/03/21 浏览次数:

system.time() 函数是我们可以用来估计代码执行所需时间的工具之一。它的输出给出了三个值:用户、系统和经过的时间(以秒为单位)。

在对所涉及的术语进行简要说明后,我们将查看此函数的输出示例,以了解每个值所测量的内容。

理解 R 中 system.time 函数输出中的术语

system.time() 函数的输出中,最容易理解的术语是第三个值:elapsed。它测量代码块运行时经过的时钟时间。

在几乎所有情况下,这对用户都很重要:他们必须等待 R 完成运行代码。

另外两个,用户和系统的组合,测量 CPU 执行代码块的时间。

简单来说,我们可以将它们视为如下。

用户时间是处理用户应用程序代码(R 代码)所花费的 CPU 时间。如果用户应用程序访问系统资源,则该处理时间将报告为系统时间。

参考资料部分中给出的 Wikipedia 文章提供了有关 CPU 时间的这两个组成部分的简要技术细节。

R 中的 system.time 输出示例

下面的简单示例显示了如何使用 system.time() 函数。

示例代码:

system.time({
    print("Hello to R.")
})

输出:

[1] "Hello to R."
   user  system elapsed
  0.001   0.000   0.001

system.time() 函数在代码块之前和之后调用 proc.time() 函数,并给出了区别。

它等同于以下内容。

示例代码:

x = proc.time()
print("Hello to R.")
y = proc.time()
y-x

输出:

> x = proc.time()
> print("Hello to R.")
[1] "Hello to R."
> y = proc.time()
> y-x
   user  system elapsed
  0.001   0.001   0.001

看下面两个例子来了解用户时间和系统时间的区别。

在第一个示例中,R 计算了 1000 次并且只打印了一次。多次运行此代码块并检查结果。

示例代码:

system.time({
    x=0
    for(i in 1:1000){
        x = x+1
    }
    print(x)
})

输出:

   user  system elapsed
  0.009   0.000   0.011

虽然用户时间是正数,但系统时间在大多数情况下几乎为 0。

现在,让我们看另一个执行相同计算但打印 1000 次的代码示例。

示例代码:

system.time({
    x=1
    for(i in 1:1000){
        x = x+1
        print(x)
    }
})

输出:

   user  system elapsed
  0.093   0.026   0.120

现在,我们发现系统时间也是正数。这是因为 1000 个 print 语句使 R 可以访问操作系统的输入输出资源。

最后,为了说明经过的时间,让我们看一个 CPU 长时间空闲的例子。

示例代码:

system.time({
    Sys.sleep(5) # Time in seconds.
})

输出:

   user  system elapsed
  0.013   0.006   5.000

我们发现经过的时间远远超过 CPU 时间。它(几乎)与我们指定的睡眠时间相同,因为代码没有做任何其他事情。

参考

以下两篇 Wikipedia 文章提供了与 CPU 时间相关的简要技术细节。

  1. CPU 时间
  2. 用户空间和内核空间

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便