贫困R2019b性能表
9的观点(30天)
显示旧的评论
我读到在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
答案(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我们不断致力于更深层次的优化来改善自己的表现。
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);
结束