开发区域

MATLAB的高级软件开发

现在的趋势!

今天我很高兴向大家介绍我在MathWorks的同事Anoush Najarian。Anoush是MATLAB性能团队的一名工程经理,她在许多伟大的项目中都发挥了重要作用,比如我们一直在博客中提到的性能测试框架,以及R2015b中新的MATLAB执行引擎的显著性能改进。事实证明,她也热衷于参与创客社区,可以看到她做各种有趣的物联网项目,比如叽叽喳喳的植物.这对我们来说是个好消息,因为她现在可以利用她的性能知识,以及她对ThingSpeak IoT平台的熟悉程度,演示使用该平台跟踪代码的性能趋势是多么容易。废话不多说,让我们听听Anoush是怎么说的:

将性能测试运行的结果可视化是很重要的!为什么?人们善于发现模式,从图片中学习得更好。

我喜欢用ThingSpeak用于创客项目。对于这篇文章,我认为让ThingSpeak帮助跟踪和分析趋势将是有趣和有用的MATLAB性能测试框架运行。我们要借用安迪讨论过的例子同行比较

让我们看看如何随着时间的推移跟踪Sarah代码的性能。

首先,让我们运行初始代码:

measResult = runperf(“comparisonTest / InitialCode”);samples = measResult。样品
运行comparisonTest ........完成comparisonTest  __________ 样品=名字MeasuredTime时间戳RunIdentifier主机平台版本  __________________________ ____________ ____________________ _________________________ ________ _____________________ ____________________________________ comparisonTest / InitialCode 23.443 - 6月29日2016 16:44:18 Anoushs-MacBook-Pro。local maci64 9.0.0.341360 (R2016a) f0918bed-906d- 4feed- 93c5-dd9bb2241836 comparisonTest/InitialCode 23.662 29- june -2016 16:44:41 anoush - macbook - pro。localmaci64 9.0.0.341360 (R2016a) f0918bed-906d- 4feed- 93c5-dd9bb2241836 comparisonTest/InitialCode 24.057 29- june -2016 16:45:05 anouhs - macbook - pro . aspx . aspx。localmaci64 9.0.0.341360 (R2016a) f0918bed-906d- 4feed- 93c5-dd9bb2241836 comparisonTest/InitialCode 24.207 29- june -2016 16:45:30 anoush - macbook - pro。local maci64 9.0.0.341360 (R2016a) f0918bed-906d-4fed-93c5-dd9bb2241836

我们设置ThingSpeak通道字段来模拟性能测试框架的数据结构。(看一看开始使用ThingSpeak!)你可以使用我们的公共频道发布你的数据,所有的代码在这个帖子将工作。

为了把我们的数据发布到ThingSpeak,我们需要格式化它一点,并提供一个写键我们的频道

dataTable =表(样本)时间戳,cellstr(samples.Platform), cellstr(samples.Host), cellstr(samples.Version), cellstr(samples.Name), cellstr(samples.RunIdentifier), samples.MeasuredTime);channelID = 82845;writeKey =“H952GH69VMDB4C2X”;thingSpeakWrite (channelID dataTable,“WriteKey”, writeKey);

我们可以在持续集成工作流中包含这个脚本,或者在修改算法时手动运行它。数据被上传到ThingSpeak,并保存在那里。我们可以使用ThingSpeak上的一系列很酷的MATLAB工具来操作它。

我们逐渐实现了Sarah的所有优化。以下是我们今年到目前为止的趋势;我们列出了过去几个月的奖金趋势:

这是ThingSpeak上运行的代码,驱动我们的第一个MATLAB可视化。你也可以在你的MATLAB会话中运行它,并在本地得到一个图!

readChannelID = 82845;数据= thingSpeakRead(readChannelID,“字段”, [4, 6],“NumPoints”, 649,“OutputFormat”“表”);thingSpeakPlot(数据。时间戳,cellfun(@str2num, data.MeasuredTime)“包含”“日期”“YLabel”...“测量时间,秒”“网格”“上”“标记”“o”“线型”“- - -”“线宽”2,...“标题”《2016年MATLAB性能测试框架趋势》);

如果我们将鼠标悬停在趋势图中的数据点上,或者放大,我们将发现帮助提高Sarah代码性能的关键优化。初始代码测量约23.8s:

2月20日,我们切换到预分配代码,加速到22.3秒左右,或6%:

5月2日,我们实现了内两个循环向量化的优化;这使代码速度提高了100倍以上,达到0.2秒。

最后,在6月9日,我们实现了向量化内部三个循环,代码加速到0.06秒,或67%。

总之,在过去的几个月里,我们的趋势捕获了相当惊人的400倍以上的性能改进!

接下来是什么?我们可以使用ThingSpeak上的MATLAB分析和可视化工具进行更高级的数据分析,比如查看错误条和在一套测试中标准化性能。我们可以设置电子邮件提醒,以响应性能趋势的变化。

让我们在评论中知道您是如何跟踪性能的,以及什么样的可视化和警报对您有用!




发布与MATLAB®R2016a

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。