首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么`Rprof`列出的是`match.fun`实际函数而不是它的别名

Rprof是R语言中的一个性能分析工具,用于分析R代码的运行时间和内存使用情况。当使用Rprof进行性能分析时,有时会发现在分析结果中列出的函数名并不是函数的别名,而是函数的实际名称。

这是因为在R语言中,函数可以有多个别名,即可以使用不同的名称来调用同一个函数。这种情况下,Rprof会列出函数的实际名称,而不是它的别名。

函数的别名可以通过formals函数来获取,它返回一个函数的参数列表和默认值。而函数的实际名称可以通过body函数来获取,它返回一个函数的定义体。

为了更好地理解这个问题,让我们以一个具体的例子来说明。假设我们有一个函数add,它的别名是sum。我们可以使用以下代码来定义这个函数:

代码语言:txt
复制
add <- function(a, b) {
  return(a + b)
}

sum <- add

在这个例子中,我们定义了一个函数add,它接受两个参数并返回它们的和。然后,我们将这个函数的别名设置为sum

现在,如果我们使用Rprof来分析这个函数的性能,我们可能会得到以下结果:

代码语言:txt
复制
$by.self
                self.time self.pct total.time total.pct
"add"                0.02    66.67       0.03    100.00
"sum"                0.01    33.33       0.01     33.33

在这个结果中,我们可以看到add函数和sum函数都被列出来了。但是,add函数被列为实际函数,而不是它的别名sum

这是因为在R语言中,函数的别名只是一个指向实际函数的指针。当我们调用别名时,实际执行的是实际函数。因此,在性能分析中,Rprof会将实际函数列为函数的名称,以反映实际执行的函数。

总结起来,Rprof列出的是match.fun实际函数而不是它的别名,是因为在R语言中,函数的别名只是一个指向实际函数的指针,而实际执行的是实际函数。这样做可以更准确地反映函数的执行情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 useState 返回 array 不是 object?

[count, setCount] = useState(0) 这里可以看到 useState 返回一个数组,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 解构赋值,来看 2 个简单例子: 数组解构赋值 const foo = [1, 2, 3]; const [one, two, three...); // 第二次使用 const { state: counter, setState: setCounter } = useState(0) 这里可以看到,返回对象使用方式还是挺麻烦,更何况实际项目中会使用更频繁...总结 useState 返回 array 不是 object 原因就是为了降低使用复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回 array 不是 object?

2.2K20

前端开发实际上操作数据,不是DOM

如果有老师教,那么他会告诉你说,HTML骨架,用来构成网页结构;CSS样式表,用来定义网页样式,就是相当于用来给房子做装修用;然后JS呢,它是管交互,就相当于一个大楼里开关啊或是电梯之类...因为这类网页没有一个确定结构,随着不同权限的人,操作不同数据,处于不同状态,而在这期间,DOM结构不断变化。...就是说,这个页面它会有很多种结构,而且可能每个人 & 用户在这个页面进行操作时候,结构都不一样。这种页面,没有静态结构,里面的所有DOM都是通过JS操作DATA动态生成。...如果处于完全静态状态时,这个页面里面应该是空,什么都没有。为什么会这样呢?因为没有数据。 从html网页发展来看,它有这么几个阶段, 一,完全静态。你切完,就上线,页面上文字都直接写上。...昨天文章里我说过,你在京东买东西,你点击input,但实际上通过input标签,你触发了ajax事件,调用了updata方法,修改了你payCart对象,即购物车对象里val值,这是什么?

1K80
  • 为什么 Docker 和 Kubernetes 用 Go 写不是 C# ?

    这是 Reddit 平台上面这几天一篇比较热门帖子, 非常有意思,本文我列出了几个高赞回答。...HahahahahaSoFunny 为什么 Docker 和 Kubernetes 工具用 Go 写不是 C#? 总所周知,现在开发人员使用很多新工具大多是用 Go 写。...为什么不是 C# 呢? .NET 和 C# 现在功能已经很强大了,是不是社区缺少这种文化?如何才能培养一种更加开源文化, 因为很多开发人员对 .NET 和 C# 仍然还抱有偏见。...haho5: 不确定为什么 Docker 用 Go 写, 但是 Kubernetes 确实是 Google 开发, 并且 Golang 也是。...但是实际上,应该根据工作场景选择使用正确工具。 bilby2020: 我曾经一名 C# 程序员(现在还在做一点)。不管你喜不喜欢,C# 语法太复杂了。

    1.1K00

    是否还在疑惑Vue.js中组件data为什么函数类型不是对象类型

    分析Vue.js组件中data为何函数类型而非对象类型 引言 正文 一、Vue.js中data使用 二、data为对象类型 三、data为函数 结束语 引言 要理解本篇文章,必须具备JavaScript...Vue() //此时vm1应该是这样 vm1 = { //这里data,先获取了函数Vue中data(data值为函数),然后得到了data返回值 this.data = {...Vue() //此时vm2这样 vm2 = { //这里data,先获取了函数Vue中data(data值为函数),然后得到了data返回值 data: { name: '李四...这是因为这两个实例对象在创建时,先获得了一个函数,将该函数返回值作为了自己属性data值,并且这两个实例对象中data值在栈中对应堆中地址也不一样,所以他们不会互相影响。...55' } } //创建了一个Vue实例,会调用上面的定义函数 let vm1 =new Vue() //此时vm1应该是这样 vm1 = { //这里data获取了函数Vue中data

    3.5K30

    框架篇-Vue面试题1-为什么 vue 组件中 data 函数不是对象

    在vue组件中data属性值函数,如下所示 export default { data() { // data一个函数,data: function() {}简写 return...// data一个对象 name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象函数,因为组件可能被用来创建多个实例 也就是说,在很多页面中...,定义组件可以复用在多个页面 如果data一个纯碎对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例中修改data,都会影响到所有的组件实例 如果data函数,每次创建一个新实例后...,实例化出来对象(p1,p2)都指向同一份实体 原型下属性相当于是公有的 修改一个实例对象下属性,也会造成另一个实例属性跟着改变,这样在组件复用时候,肯定是不行,那么改成函数就可以了,如下代码所示...'itclanCoder', }; }; var p1 = new Person(); var p2 = new Person(); p1.data.name = '随笔川迹'; // 如果函数形式去定义属性

    1.9K20

    Java里面Join(),为什么等待主线程,不是当前子线程?

    但是仔细一想,发现这个明明调用子线程join()方法,按道理应该子线程等待执行才是,为什么反而是主线程等待了呢?...,我们可以看到使用了while (isAlive()) 循环判断线程存活状态,满足就调用wait方法,当有设置时长时候会根据时长来进行等待。...注意按照程序执行顺序,我们这里主线程调用ThreadJoin方法,所以是判断子线程存活状态,满足则让子线程执行,主线程来等待。...wait 等待方法让线程进入等待队列,使用方法 obj.wait(); 这样当前线程就会暂停运行,并且进入obj等待队列中,称作“线程正在obj上等待”。...可以把子线程t理解为一个普通obj对象,调用twait()方法,实际上就是主线程(main线程)在childThread对象队列上等待,可以转换为如下写法进一步理解: /** * 主线程 */

    81250

    为什么企业数据库转向 CLOUD DATABASE 不是国产数据库

    这些对于数据库有什么影响,其实就是成本问题,一个企业本身一个盈利机构,盈利机构中就必须要针对投入产出比进行衡量,IT 成本尤其机房建设本身对于企业消耗蛮大,并且这些还是一个持续性投入,...随着经济问题凸显,各个企业项目会缩减,维稳一个主基调,对于一些项目的建设大多是基于灵活性运作方式,也就是项目走一步算一步,并且灵活性很高,针对这些新项目的建设就需要评估,而在搞不清这些项目的持续回报情况下...国产数据库本身买家大部分都不是企业,而是国内政府机构,之前国内政府机构预算充足,可以进行阶段化持续性购买,并且对于投入产出比并不会进行细致估算,大多是形象项目。...同时对于企业来说,降低IT 类雇员数量也是一个轻装上阵方式,更少维护人员,与更高稳定性本身并不是一个矛盾体,通过云上基础建设可以满足以上要求。...基于数据库产品,国内大部分云厂商都提供了产品,并且随着使用企业越来越多,对于产品持续迭代和快速更新也是吸引企业持续使用云上产品保证书,终究企业都是希望使用产品被验证过不是去当小白鼠。

    76040

    为什么 C# string.Empty 一个静态只读字段,不是一个常量呢?

    进一步可以发现 string.Empty 实际一个静态只读字段,不是一个常量。 为什么这个看起来最适合常量 string.Empty,竟然使用静态只读字段呢?...也就是说,string.Empty 字段并不是一个普通字段,对调用会被特殊处理。但是如何特殊处理呢?...string.Empty 需要是一个静态只读字段不是常量?...String 类构造函数(注意不是静态构造函数,String 类静态构造函数特殊处理不会调用); 如果这是一个静态字段,那么编译器可以在不做特殊处理情况下,生成 ldsfld string...当然,事实上编译器也可以针对此场景做特殊处理,但为什么不是在编译这一层进行特殊处理,我已经找不到出处了。 本文引申其他问题 能否反射修改 string.Empty 值? 不行!

    1.1K00

    闲话--为什么下一代数据库产品云原生数据库,不是

    为什么下一代数据库基于云原生数据库,WHY ,因为市场。...所以下面要探讨不是纯技术,如同人生一样,不是三好学生,985,211,你就一定是人生赢家,所以谈一个产品未来,要看你是否有能力用产品打开市场,或者掌握流量密码。...所以那些还在打着,本地部署数据库可以看到夕阳了,这就好比你还在生产方便面,但突然卖不动,不是因为其他方便面更便宜,是因为有了外卖,有外卖我为什么要吃方便面。...POLARDB ,POLAR-X ,等等,大概率可能,我会继续和阿里云做一个友好绑定,不是某些国产NO.1分布式数据库。...说有点远,到底云数据库是什么,云数据库本身应该是一套体系,一套可以满足客户从数据库使用,到数据库安全,数据安全,各种基于数据库周边需求和服务,注意他一套服务,不是和现在传统数据库厂商生产出来产品一样性质东西

    60220

    初识字节流+实现缓冲字节流OutputStream主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回Int型不是

    (String file,boolean append) FileOutputStream(File file,boolean appeand) 后面两种方法用于判断是否需要续写,前面两个方法直接覆盖文件...System.currentTimeMillis(); System.out.println("复制所用时间:"+(end-begin)+"毫秒"); } } 下面结果...System.currentTimeMillis(); System.out.println("复制所用时间:"+(end-begin)+"毫秒"); } } 下面结果...输出缓冲就是把数据存到数组中,再一起写到OutputStream中缓冲区,最后在刷新 刚刚用这个复制一个11.1MMP3花了0.6秒,和系统时间差不多↖(^ω^)↗!!...---- 错误返回了-1 如果扫描到了11111111那么此时将byte->int-1,如果这样的话,程序就会终止不会进行 为什么read()返回Int型不是byte型呢??

    1.3K80

    50-R茶话会 (十:R编程效率提升指北)

    ,比如向量中a,b,c 三个数,prod 直接获得a*b*c 结果,cumprod 则是分别得到a, a*b, a*b*c 结果。...R软件中Rprof()函数可以执行性能分析数据收集工作, 收集到性能数据用summaryRprof()函数可以显示运行最慢函数。...Rprof() 这个函数用起来还是挺奇怪: file<-"test.out" # 指定一个输出文件夹 Rprof(file) # 指定输出文件夹 ### 下面部分就可以执行需要测试代码了 fun1(...) ### Rprof(NULL) # 执行完毕,关闭Rprof 输出文件长这个样子: 这个文件没有任何意义哒,我们需要使用其他命令来分析。...该包中函数parse_rprof 同样可以对Rprof文件进行分析: > profr::parse_rprof(file) level g_id t_id f start

    87710

    MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】

    常见用途包括在实际表列名包含不符合规定字符(如空格)时重新命名,在原来名字含混或容易误解时扩充,等等。...函数一般在数据上执行给数据转换和处理提供了方便。...| 聚集函数使用 我们经常需要汇总数据不用把它们实际检索出来,为此MySQL提供了专门函数。...找出表列(或所有行或某些特定行)最大值、最小值和平均值。 上述例子都需要对表中数据(不是实际数据本身)汇总。...例如,可能想要列出至少有两个订单所有顾客。为得出这种数据,必须基于完整分组不是个别的行进行过滤 事实上,目前为止所学过所有类型WHERE子句都可以用HAVING来替代。

    3.6K43

    SQL命令 ORDER BY(一)

    指定列排序 可以指定要排序单个列,也可以指定多个列作为逗号分隔列表。 排序由第一个列出列完成,然后在该列中由第二个列出列完成,以此类推。 列可以通过列名、列别名或列号指定。...如果在SELECT列表中没有指定列别名,则在指定聚合函数、窗口函数或表达式时,使用选择项列号(例如3),不是默认列名(例如Aggregate_3)。...即使RowID私有的并且没有在选择项列表中列出,也可以按RowID值排序。 应该指定%ID伪列名作为ordering-item,不是实际RowID字段名。...ORDER BY不区分空字符串和仅由空格组成字符串。 如果为列指定排序规则是字母数字,则前导数字将按字符排序顺序不是整数顺序排序。 可以使用%PLUS排序函数按整数顺序排序。...SELECT子句列表中第三个列表项(C)数据值按升序排序; 在这个序列中,按降序对第7个列出项(J)值进行排序; 在其中,按升序对第一个列出项(A)值进行排序。

    2.6K30

    机器视觉算法(第6期)----OpenCV中基础数据类型

    Point类 作为OpenCV基本类型,Point类可能最简单,虽然比较简单,但是熟悉opencv你,并不一定对很了解,特别是一些操作。...Scalar类 Scalar四维点类,与其他类型类似,实际上与一个模板类相关,但访问别名返回一个该模板实例。模板中,所有成员都是双精度浮点型数据。...3. size类 size类在实际操作中和Point类相似,而且可以与Point类互相转换,两者主要区别是Point类数据成员x和y,size类数据成员width和height。...size类有三个别名,分别是Size,Size2i,Size2f,前面两个等价,表示整数大小,最后一个表示32位浮点大小。下表列出了size类支持操作: ? 4....通常,固定矩阵类实际一个模板,这个模板称为Matx,但独立矩阵通常通过别名分配,这些别名基础格式为Matx{1,2,...}{1,2,...}

    64550

    《高效R语言编程》7--高效优化

    需要用到包:microbenchmark, ggplot2movies, profvis, Rcpp 代码分析 首先是确定哪个瓶颈,Rprof()可以分析一个内置工具,但是这个结果不确定,取决于外部环境...结果显然回归共了最多时间,也是可以理解。...有没有见过显示n6L,不是6情况,L一个简写,用于生成 一个整型,应该是long吧,R中数值是以双精度存储。整数可以比小数存储空间节约一倍,更进一步节约空间用bit包。...优点不必启动和停止集群对象。 Rcpp C++一个现代、快速并具有较强支持度语言,包含各种库。Rcpp提供了一个友好API,编写高性能代码,C++中瓶颈典型地址循环与递归函数。...有一点效果,不是太明显

    1.3K40

    Shell脚本——内置命令

    一、内置命令 所谓 Shell 内置命令,就是由 Bash 自身提供命令,不是文件系统中某个可执行文件。...ifconfig ifconfig is /sbin/ifconfig 由此可见,cd 一个 Shell 内建命令, ifconfig 一个外部文件,位置/sbin/ifconfig。...二、alisa命令 alisa 用来给命令创建一个别名。若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名。...现在你应该能理解类似ll这样命令为什么与ls -l效果一样吧。 三、echo命令 echo 一个 Shell 内建命令,用来在终端输出字符串,并在最后默认加上换行符。...-d delimiter 用字符串 delimiter 指定读取结束位置,不是一个换行符(读取到数据不包括 delimiter)。

    2.1K10

    MySQL(七)联结表

    ,伸缩性强(能够适应不断增加工作量不失败,设计良好数据库或者应用程序称为可伸缩性好(scale well)) PS:联结一种机制,用来在一条select语句中关联表,因此称之为联结(联结在运行时关联表中正确行...(因为创建关联,所以指定了3个列,区别在于A_name在A表中,B_name和B_mobile在另一个表);from语句列出了2个表分别是A和B,A和B表使用where子句正确联结, where子句指示...子句重要性 在一条select语句中联结几个表时,相应关系在运行中构造;在联结两个甚至多个表时,实际将第一个表中每一行与第二个表中每一行配对,where子句作为过滤条件,只包含匹配给定条件行...on A_name = B_name; 这条SQL语句中,select语句与之前相同,相较于上面的from,这里使用了inter join指定(当使用inter join时,联结条件用on子句不是where...p1,第二次为别名p2,在select语句中明确使用p1前缀给出所需列名,否则MySQL将返回错误,因为其无法正确区分想要具体为哪一列; 3、自然联结 无论何时对表进行联结,应至少有一个列出现在不止一个表中

    73210

    07-08 创建计算字段使用函数处理数据第7章 创建计算字段第8章 使用函数处理数据

    我们需要直接从数据库中检索出转换、计算或格式化过数据,不是检索出数据,然后再在客户端应用程序中重新格式化。...计算字段并不实际存在于数据库表中,运行时在 SELECT 语句内创建。 注意 只有数据库知道 SELECT 语句中哪些列实际表列,哪些列计算字段。...许多数据库保存填充为列宽文本值,实际上要结果不需要这些空格。...别名还有其他用途,包括在实际表列名包含不合法字符(如空格)时重新命名,在原来名字含混或容易误解时扩充。 7.3 执行算数计算 计算字段另一常见用途对检索出数据进行算术计算。...SOUNDEX 考虑类似的发音字符和音节,使得能对字符串进行发音比较不是字母比较。 日期和时间处理函数 日期和时间采用相应数据类型存储在表中,每种 DBMS 都有自己特殊形式。

    3.7K20

    TypeScript 4.2 正式发布:更智能类型别名保留,声明缺失帮助函数,还有许多破坏性更新

    在 TypeScript 4.2 中,我们内部结构更加智能。我们通过保留类型各部分最初如何被编写和构建,来跟踪类型如何被构建。我们还对类型别名与其它别名实例进行跟踪和区分!...有关更多信息,请查看第一个拉取请求,改进了有关保留组合类型别名各种用例,以及第二个拉取请求,保留了间接别名。...推断程序文件一个复杂过程,因此有很多原因可以解释为什么要使用lib.d.ts特定组合,为什么要包括node_modules中某些文件,以及要包含某些文件金骨干我们认为指定exclude会将它们排除在外...有各种变化,Intl和ResizeObserver变化可能最具有破坏性。...lift现在需要一个readonly Node[]不是一个NodeArray。

    3.2K20
    领券