我发现MATLAB的强大之处在于,它让我在设计目标解决方案之前,可以快速地原型化数值数学问题。上述这种深奥的效率是非常聪明的,这要归功于提出它的人,然而,这分散了我对MATLAB的使用,而不是增加了重要的价值。取决于目标机器(桌面工作站或嵌入式设备),我最终将使用C/ c++,汇编和VHDL来实现我的过程有效的代码,而不是解释语言。
这是一个更新,因为我有一个人问我的帖子…
我认为速度只是性能的一个指标,另一个指标是内存利用率。这个问题的关键是存储在内部的变量的“类型”。通过使用ans = 1:10;变量ans(我相信)的类型是双精度浮点(每个数字8字节)。另一方面,通过使用str2num,一个字符数组(每个字符1个字节)被用来紧密存储所需的微小整数范围的数字。这样,存储ans所需的内存就少了8倍。
所以,我不确定他们是如何评价(或衡量)内存效率和执行时间之间的重要性(跨多个平台和操作系统),因为在您的情况下,您声称没有强制转换的执行时间更快。这需要问对代码有特殊见解的Mathworks人员——抱歉。
我使用的是一台有12gb内存的机器,所以使用10字节和80字节之间的区别对我来说并不重要。
然而,理解这个问题是很重要的,所以我向Cody的工作人员致敬,感谢他们带来的巨大(和有趣)挑战!
希望会有帮助!
约翰
用于评估解决方案性能的度量是//www.tatmou.com/matlabcentral/fileexchange/34754-calculate-size
如果您检查代码,就会发现它与速度或内存无关。这就是我提出这个解决方案的原因,为了表明您可以成为代码的领导者,无论在执行速度还是在内存使用上都很低效。尽管我认为Cody的想法很棒,也很有挑战性,但我认为现在使用的度量标准应该重新思考。
有趣的
无法复制,在R2016a中执行时产生错误。