Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Matlab:什么更快?预先定义有用的对象吗?

Matlab:什么更快?预先定义有用的对象吗?
EN

Stack Overflow用户
提问于 2015-12-09 16:12:21
回答 2查看 73关注 0票数 4

我必须在matlab中用非常大的矩阵进行计算。我已经确保在可能的情况下使用矩阵运算等,现在正在尝试微调。因此,设A,B,C和D为矩阵:

代码语言:javascript
运行
AI代码解释
复制
C=A*B;
D=cos(C);

以下内容可能会更快(如果我错了,请纠正我),这似乎微不足道:

代码语言:javascript
运行
AI代码解释
复制
D=cos(A*B)

我的问题是,如果有更多的对预定义对象的调用,那么这样做会更快:

代码语言:javascript
运行
AI代码解释
复制
D=f1(A*B) + f2(A*B) +;

而不是预先定义C=A*B (这将节省大量的计算费用)。我有很多这样的表达式,所以一些一般性的洞察力是有用的(至少知道它取决于什么类型的参数,即矩阵大小)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-10 02:51:54

从经验来看,我知道变化:

代码语言:javascript
运行
AI代码解释
复制
y = f1(A*B) + f2(A*B)...

代码语言:javascript
运行
AI代码解释
复制
C = A*B;
y = f1(C) + f2(C)...

当您有优化代码的场景时--中间变量"C“上的操作按上面所示多次完成时,速度会更快。

当操作只完成一次时,它不太可能产生性能改进或退化,就像我认为在变量被传递到函数之前由Matlab内联完成的操作。

为了帮助演示这一点,您可以看到下面的基准函数,它测试变量A& B上的单个和多个操作(3)。

底部的图显示了结果,与上面的点是一致的。

代码语言:javascript
运行
AI代码解释
复制
function benchmark

  % test array
  testArray = 100:100:5000;  % 5000 will take quite a while - to test start with smaller (e.g. 500)
  % preallocate
  sep=zeros(numel(testArray),1);
  inline=sep;
  sepcombined = sep;
  inlinecombined = sep;
  fcnSep1    = @() sepfcn;
  fcnInline1 = @() inlinefcn;
  fcnSep2    = @() sepfcn2;
  fcnInline2 = @() inlinefcn2;
  % set up array counter
  count = 1;
  % run throuh all tests
  for i=testArray
    % create A&B
    A = zeros(i,i)+2;
    B = A+1;
    % run single actions
    sep(count)    = timeit (fcnSep1);
    inline(count) = timeit (fcnInline1);
    % combined actions
    sepcombined(count)    = timeit (fcnSep2);
    inlinecombined(count) = timeit (fcnInline2);
    % increment the counter
    count = count + 1;
    % monitor progress
    disp ( i );
  end
  % use nested functions for the actions
  function sepfcn
    C = A*B;
    sum(C);
  end
  function inlinefcn
    sum(A*B);
  end
  function sepfcn2
    C = A*B;
    sum(C)+max(C)+min(C);
  end
  function inlinefcn2
    sum(A*B)+max(A*B)+min(A*B);
  end
  %% plot the results
  figure;
  subplot ( 2, 1, 1 );
  plot ( testArray, sep, 'r-', testArray, inline,'b-' );
  legend ( 'sep', 'inline' )
  title ( 'single action' );
  ylabel ( 'time (s)' )
  xlabel ( 'matrix size' )
  subplot ( 2, 1, 2 );
  plot ( testArray, sepcombined, 'r-', testArray, inlinecombined,'b-' );
  legend ( 'sep', 'inline' )
  title ( 'multiple actions' );
  xlabel ( 'matrix size' )
  ylabel ( 'time (s)' )
end

票数 5
EN

Stack Overflow用户

发布于 2015-12-09 16:49:16

是的,您可以通过从以下语句中更改代码来加快速度:

代码语言:javascript
运行
AI代码解释
复制
D=f1(A*B) + f2(A*B) +;

这样的声明:

代码语言:javascript
运行
AI代码解释
复制
C = A * B;

D=f1(C) + f2(C) +;

因为很明显,执行的乘法较少。我见过很多matlab代码重复表达式,因为作者只是在复制-n粘贴。

至少,需要维护和调试的表达式将减少。所以一般不要重复你自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34191486

复制
相关文章
JSF标签大全详解
藉由以下的几个主题,可以大致了解JSF的轮廓与特性,我们来看看网页设计人员与应用程序设计人员各负责什么。
一朵灼灼华
2022/08/05
1.5K0
JSF之经常使用注解
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116350.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
5930
【大牛经验】Java开源web框架汇总(152款)
“框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架; 在研究好用和新框架。 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还知道其他的吗? 留言你用过的web框架 Java开源web框架汇总 1 Struts2 Struts2是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java
Java帮帮
2018/03/15
5.8K0
【大牛经验】Java开源web框架汇总(152款)
纯手工搭建JSF开发环境(JSF2.2+maven+weblogic 12c/jboss EAP 6.1+)
JSF 2.X因为种种原因(我个人觉得主要是因为推出太晚),再加上EJB2之前的设计过于复杂,引起很多开发人员对官方解决方案的反感,即使EJB3后来做了大量改进,国内也很少有人对EJB3感兴趣,目前国内主流开发架构大多采用SSH,很少有JSF 2.x + EJB 3.x的应用,但从我个人感觉来看,特别是对于从.NET转型到JAVA的web程序员而言,JSF中的很多概念其实跟.NET很接近,国外已经有越来越多的项目在采用JSF + EJB3做为技术选型,下面将详细介绍JSF的开发环境搭建.
菩提树下的杨过
2018/09/20
1.5K0
纯手工搭建JSF开发环境(JSF2.2+maven+weblogic 12c/jboss EAP 6.1+)
JSF本地联调工具实践
Tech 导读 JSF作为京东内部日常最常用的RPC组件,通过JSF扩展,为大家提供JSF扩展思路及本地联调实践。 01 背景 在项目开发中,研发同学会经历下面的过程: 图1 研发日常开发周期 但是针对团队的测试环境,涉及到几个痛点: 多人联调使用时尤其是跨部门联调时,强依赖环境稳定,频繁启停发布或者由于某些原因没有启动成功,影响的不是一个人的,而是多方的 jsf接口逻辑较多,联调环节存在隐晦的bug时,大部分做法是打点日志重启再次调用排查,如果没有发现问题,继续反复加日志重启排查。这样的过程是苦恼且费
京东技术
2022/05/12
1.5K0
JSF本地联调工具实践
富Web应用的架构与转化方法:Web应用系列第二篇
版权说明:本文书写过程中参照了红帽的技术文档;本系列文章中的部分测试代码为红帽公司版权所有,因此不能提供源码文件。
魏新宇
2018/10/23
3.7K0
富Web应用的架构与转化方法:Web应用系列第二篇
流行的9个Java框架介绍: 优点、缺点等等
在2018年,Java仍然是世界上最流行的编程语言。它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员。虽然Java不是最直接的语言,但是您不需要从头编写Java程序。有许多优秀的Java框架可以编写在Java虚拟机上运行的web和移动应用程序、微服务和REST api。
程序你好
2018/07/23
3.6K0
python 数据图表呈现
平时压力测试,生成一些数据后分析,直接看 log 不是很直观,前段时间看到公司同事分享了一个绘制图表python 模块 : plotly, 觉得很实用,利用周末时间熟悉下。
orientlu
2018/09/13
1.2K0
python 数据图表呈现
vue轮播组件--不插电手动粘贴版
轮播的原理是每一帧都选出一个当前元素,前一个元素,后一个元素然后排成一行,最后改变这三个元素的translate来触发css3的transition进行动画,当有touch事件的时候,要实时改变各个元素的位置,所以要把transition关闭。组件demo地址 m.cm233.com
Ganother
2019/02/26
8710
DevExpress数据绑定呈现
数据库这里为了方便演示,用的SQL Server 由于我数据库中的表有8列数据,这里添加8列,并设置列名和绑定的数据名称:
别团等shy哥发育
2023/02/27
1.7K0
DevExpress数据绑定呈现
如何使用MyFace快速构建基于JSF的应用
如果大家使用Apache MyFace的JSF实现来搭建JSF应用,可以利用Apache提供的便捷maven方法来快速搭建一个初始的应用。
EltonZheng
2021/01/22
9810
Angular UI 组件
官网:https://valor-software.com/ngx-bootstrap/#/
用户2098522
2018/05/05
1.5K0
Angular UI 组件
在JBOSS服务器上使用Myfaces的JSF实现
JBOSS AS服务器默认使用的JSF实现是SUN的RI,要把他替换成Myfaces需要:
EltonZheng
2021/01/22
8740
EasyUI中不启用Combobox组件的可编辑模式
Combobox组件默认是可编辑模式的,如果不想让用户可以编辑,只要在data-options中,增加editable设置为false就可以了,如下:
徐大嘴
2019/03/21
1.4K0
业务流程(代码呈现)
上图是对save和saveScore两个接口的流程抽象,save是上传答题数据,saveScore则是上传答题分数,为保证幂等和防止并发调用,这两个接口都加了分布式锁(还是两层哦)。第一层使用的是不同的锁,因为处理的是不同的表,第二层处理的是相同的表,为了保证数据在某个维度上的唯一,所以使用了相同的锁。本篇文章则主要记录下表C中的逻辑唯一键出现重复数据的问题排查过程,该问题包含了对锁、事务及Mybatis框架的综合运用和理解。
夜勿语
2022/05/18
7410
业务流程(代码呈现)
Howdy,China!:构建JSF Web Application第一篇
版权说明:本文书写过程中参照了红帽的技术文档;本系列文章中的部分测试代码为红帽公司版权所有,因此不能提供源码文件。
魏新宇
2018/10/23
1.3K0
Howdy,China!:构建JSF Web Application第一篇
信息的组织和呈现
1. 信息的组织往往比信息本身更重要。就像奈斯比特说的,"信息有合作增强的作用,也就是整体的值大于部分的和"。 通俗的说,组织信息的目的就是要将相关的信息放在一起。 2. 常见的信息组织方式可以分为两大类:符号学上的组织方法(利用信息的外在特征)和语义学上的组织方法(利用信息的内容)。 3. 符号学上的组织方法又可分为三种: a)字顺组织法:这是最常见的组织方法之一,比如词典和"按姓名拼写排序"。 b)地点法:按照信息的地点特征组织在一起。 c)时序法:按照信息的时间特征组织在一起,比如年鉴。 4. 语义学
ruanyf
2018/04/13
9090
JS逆向 | JSF*ck,这个看着头大的加密其实很简单
我遇到过有两款网站用的就是 JSFuck 加密的,这个转换风格第一次遇到的时候内心OS就和这个名字一样。
龙哥
2020/03/05
1.2K0
JS逆向 | JSF*ck,这个看着头大的加密其实很简单
How Web App Development Process is Becoming More Efficient?
The software development industry is extremely competitive these days, the clients want the projects to be developed on lower costs with a higher level of customer satisfaction. The lowering budgets, consistently increasing competitors in the market and higher complexity of projects has forced software and web app development companies to improve their working process. In the first decade of this century, Agile principles were adopted first and then later on the sprint for improvement has begun to improve the efficiency of web app development in every area.
用户4822892
2019/08/24
4350
How Web App Development Process is Becoming More Efficient?
JSF预热功能在企业前台的实践与探索
Tech 导读 企业前台包含了企业业务大部分的对外前台系统,其中京东VOP平台(开放平台)适合于自建内网采购商城平台的企业客户。京东为这类客户专门开发API接口,对接到客户内网的网上商城,将产品SKU直接推送到客户内网,客户内部采购人员可以直接在内网商城进行下单采购,订单信息通过API接口传递到京东后台,由京东安排物流配送服务。VOP模式下,客户内网的数据信息京东并不抓取,从而实现内部采购架构的独立搭建及数据的保密与安全。 随着业务的不断发展过程中,VOP截至目前已经服务于上千家企业SaaS商城,其API接口的高并发、高可用、高可靠也就越发的重要。尽管上线时尽可能的降低对接口的波动,整个上线流程中无损下线是没问题(NP层冷备机器直至无流量打进来,JSF层下线JSF服务),但是(自身&服务提供方)上线的瞬时波动或多或少会引起系统的一阵报警,每一次性能或者可用率的报警都可能带来客诉。 JSF1.7.6对于预热策略动态下发特性的升级公告吸引了作者,所以本文也将从JSF1.7.6预热的实践测试报告中,真实的讲述预热给前台带来的体验和帮助,希望对读者有参考作用。
京东技术
2023/08/22
1860
JSF预热功能在企业前台的实践与探索

相似问题

在PowerShell任务中执行az登录

20

无法使用az登录

120

无法使用Az模块或Az/CLI设置unauthenticatedClientAction

12

AZ (az vm运行命令调用)在使用参数执行时丢失变量数据

11

无法使用az函数设置%2属性az plan update

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档