贫困R2019b性能表

9的观点(30天)
詹
2019年11月9日
我读到在2019 b表对象性能的改善与subsref东西(至少)。我整理一个简单的脚本,并直接r2018b r2019b相比,新的安装。
2019 b是 低于2018 b。如果这是意想不到的,我怎么能算出什么错了吗?
clearvars——除了t
t = readtable (“patients.dat”);
var1 =“位置”;
var2 =“年龄”;
元= 1 e4;
抽搐
我= 1:nt
t.Age (3) = 20;
结束
流(案例1:% g \ n '、toc);
抽搐
我= 1:nt
t。位置= t.Age;
结束
流(案例2:% g \ n '、toc);
抽搐
我= 1:nt
t。var1 = t。(var2);
结束
流(“案例3:% g \ n”、toc);
抽搐
我= 1:nt
t。(var2) (3) = 20;
结束
流(案例4:% g \ n的、toc);
R2018b:
情况下1:0.987709
情况下2:0.817124
情况下3:0.741722
情况下4:0.922625
R2019b:
情况下1:1.64177
情况下2:1.20244
情况下3:1.19423
情况下4:1.5782
1评论
马丁·莱希
马丁·莱希 2019年11月12日
编辑:马丁·莱希 2019年11月12日
根据R2019b的发布说明:
“然而,性能改进发生只有当你做表写在下面的作业在一个函数。没有改进时加下标为表在命令行中,或者在try - catch块。”
我试图把代码放到一个函数非常相似的结果。我只有Matlab R2019a和R2019b安装。但是你的代码仍然慢R2019b运行。
我试着修改代码,但我总是一个非常类似的性能在R2109a和R2109b。我不确定这个测试表明因为你多次访问一个元素的一个小桌子。如果我修改测试多次访问多个或全部元素的性能还是一样的。

登录置评。

答案(3)

剪秋罗属植物龙
剪秋罗属植物龙 2020年3月27日
编辑:剪秋罗属植物龙 2020年3月27日
你好,
继续我们的投资表现,R2020a已经发布有索引的改善 , 时间表 直言, datetime , 持续时间 calendarDuration 。尤其是对于这个线程,性能是现在所有数组大小。请参阅我们的 性能版本说明 获取详细信息。
回到詹的原始时间例子使用100 -行表(附件)。在 R2020a ,它会产生以下结果相同的例子,注意改进以R2018b有相同的设置:
% R2020a
> > JG_timing_example;
情况下1:0.663
情况下2:0.528
情况下3:0.405
情况下4:0.621
% R2018b
> > JG_timing_example;
情况下1:0.874
情况下2:0.668
情况下3:0.683
情况下4:0.791
马丁的示例使用1 e6行表(附件)也显示 持续改进跨连续发布:
% R2020a
> > MARTIN_timing_example
索引表:0.634
索引为Matlab向量:0.008
索引为向量结构:0.007
% R2019b
> > MARTIN_timing_example
索引表:1.271
索引为Matlab向量:0.007
索引为向量结构:0.007
% R2019a
> > MARTIN_timing_example
索引表:51.351
索引为Matlab向量:0.007
索引为向量结构:0.007
虽然仍有更多的工作要做,这些改进代表我们不断致力于推进性能在最近的这些数据类型——那些携带丰富的自然生态系统来表示数据和支持你的日益复杂的工作流。金宝app
2的评论
米歇尔·赫希
米歇尔·赫希 2020年4月16日
詹:对不起19 b性能回归的影响对你的工作。你能说更多关于你的执照吗?如果它当前的维护(或在去年购买的),有免费访问新版本。随时给我信息直接通过我的资料,如果你喜欢这么说的话。

登录置评。


剪秋罗属植物龙
剪秋罗属植物龙 2019年11月20日
感谢大家跟踪表的性能。
首先,很抱歉,分配到大的性能提升 / 时间表 变量是以牺牲性能回归的变量。 R2019b的改进 只关注大变量。例如,正如马丁指出的那样,下标赋值与1 e6行变量显著(~ 40 x)在R2019b R2019a相比更快。这是事实表和时间表,以及其他新数据类型等 datetime 分类 。因为我们的工作流研究表明性能更重要的是在大型变量/数组,我们做了一个艰难的选择提供这种实质性的改善,尽管回归小变量/数组。然而,尽管大幅低于改进回归,我们意识到,将在以后的版本中解决问题。
我也强调这些R2019b改进不是一次性的工作。我们有活动,正在进行的项目优先加下标性能的数据类型。马丁是正确的请注意,结构和数值数组在多年之后收到了非常积极的优化存在的语言。数据类型介绍了最近,例如表和datetime,拥有丰富的生态系统以支持现代分析工作流和他们原来的形式表示数据更自然。金宝app我们不断致力于更深层次的优化来改善自己的表现。
为此,请联系我们如果你的工作流特别是最近推出了影响性能数据类型(即表、datetime分类等),如“詹”表明,影响使用的“95%的时间”。寄给我们你的工作流的答案, 直接消息 通过支持金宝app 最重要的是,包括所有的部分工作流程(即计算、进出口等)对你的重要的目标——不仅仅是单独加下标。 经常有小的变化我们可以推荐明显提高性能在现有代码。最后但并非最不重要,你的具体的例子会通知我们的发展大有帮助——我们非常想了解他们!
2的评论
剪秋罗属植物龙
剪秋罗属植物龙 2021年9月29日
嗨,马克,
谢谢你分享你的工作流程。我想更好的了解你的表现的挑战。
  • 这段代码看起来像一个对象的方法。你知道它是一个值或处理的对象?有可能列举的类/数据类型对象的属性(即。obj.EventSchedule就是其中之一)?
  • 是4输入标量吗?
  • 在你的矩阵方法,你的意思是你是存储eventCallbackfunction_handle在相同的单元阵列4年代,一样newEvent变量(自function_handle不是concatenatable数字矩阵)?
  • 这个函数的调用站点是什么样子的呢?例如,它在某种GUI事件节点,称为一个try / catch块等。
  • 热点在这个函数其他的分支,obj.EventSchedule增加1行每次调用这个函数呢?(我假设如果分支只完成一次当属性没有分配)
  • 大约多少次这个函数被称为,推论,什么最终的尺寸表/“矩阵”的结束?
是否可以提供一些示例数据和代码片段复制你的观察在我结束?

登录置评。


马丁·莱希
马丁·莱希 2019年11月12日
验证提升性能改进我测试的例子R2019b发布说明和比较了索引速度的数组和结构体(见下面的代码,在评论部分的性能结果比较)。在的情况下 随机指数 旧版本的性能退化根据发行说明。
我不知道,表是如此糟糕的性能。与索引到相同的结构(结构体字段Var1)表的性能仍然是一个多因素 100年慢 结构体。indixing为Matlab数组直接的性能几乎相同的性能结构。
函数[t tmp tmpStruct] = timingTest_MatlabTable ()
%性能测试
%我增加了价值,确保JIT不会扔掉所有计算。因为它从来没有被使用。
%的R2019b我没有遇到任何差异(有或没有返回值)。我认为Java的JIT是做更多
%积极优化。
%
% {
%的例子运行一个典型的结果
[t tmp tmpStruct] = timingTest_MatlabTable ();
% R2019b结果:
索引表:1.66243
在Matlab中进行索引向量:0.0089993
索引向量结构:0.0091241
% R2019a结果:
索引表:56.3513
在Matlab中进行索引向量:0.0097908
索引向量结构:0.0101078
%}
tmp = 0 (1) e6, 1);
t =表(tmp);
tmpStruct =结构(“Var1”、tmp);
指数=兰迪(1 e6, 10000);
抽搐;
i =指数
t.Var1 (i) =兰德;
结束
流(“索引表:% g \ n”、toc);
抽搐;
i =指数
tmp (i) =兰德;
结束
流(在Matlab中进行索引向量:% g \ n '、toc);
抽搐;
i =指数
tmpStruct.Var1 (i) =兰德;
结束
流(“索引向量结构:% g \ n '、toc);
结束
3评论
詹
2019年11月14日
我尝试使用动态特性对于表变量。有足够的速度损失,我决定反对,尽管在我的应用程序设置的变量是一致的,以至于我可以忍受硬编码的变量名(或继承一个类和一个新的变量名在需要的时候)。

登录置评。

下载188bet金宝搏


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!