Matlab全局变量可以在Matlab中产生更好的性能吗?

2023-12-07

我讨厌使用全局变量,每个人都应该这样做。如果一种语言无法使用全局变量,则应该对其进行更新。目前,当效率是目标时,我不知道在 Matlab 中使用全局变量有什么好的替代方法。

据我所知,只能通过 4 种方式在回调之间共享数据:

  1. 嵌套函数
  2. getappdata(guidata 使用什么)
  3. 句柄派生类对象
  4. 全局变量

嵌套函数强制整个项目位于单个 m 文件中,并且句柄派生类对象(发送到回调),给出不合理的overhead我上次检查过。

比较获取应用程序数据/guidata with 全局变量,在给定的回调中你可以写(假设uglyGlobal以 1000x1000 垫子形式存在):

global uglyGlobal;
prettyLocal = uglyGlobal;
prettyLocal(10:100,10:100) = 0;
uglyGlobal = prettyLocal;

或者你可以写(假设uglyAppdata以 1000x1000 垫子形式存在):

prettyLocal = getappdata(0,'uglyAppdata');
prettyLocal(10:100,10:100) = 0;
setappdata(0,'x',prettyLocal);

上面的代码片段应该以同样的方式工作。仅通过以下方式就可以(但不能保证)更有效:

global uglyGlobal;
uglyGlobal(10:100,10:100) = 0;

这个片段与之前的片段不同,may不触发 Matlab 中的写时复制。全局工作区中的数据被修改,并且(可能)仅在那里。

但是,如果我们进行无害的修改:

global uglyGlobal;
prettyLocal = uglyGlobal;
uglyGlobal(10:100,10:100) = 0;

Matlab 将确保prettyLocal获取自己的数据副本。当您分析时,上面的第三行将显示为罪魁祸首。更糟糕的是我的大脑(全局变量往往会这样做),任何其他存在的具有对全局变量的本地引用的工作区都会为该变量创建一个写时复制触发器,每个触发器一个。

然而,当且仅当确保不存在本地引用:

仔细使用全局变量真的可以在 Matlab 中产生最佳性能的程序吗?

注意:我会提供一些计时结果,但不幸的是我无法再访问 Matlab。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab全局变量可以在Matlab中产生更好的性能吗? 的相关文章

  • ReactJs 中输出事件的 Angular

    我正在寻找在 ReactJs 中创建类似 Angular 等输出事件的方法 我正在根据 Atomic 设计在 ReactJs 中制作一个组件库 因此 例如 我在其他组件中注入了一个 Button 我想知道如何为 Button 编写一个 pr
  • 为什么Python的“sorted()”比“copy,then.sort()”慢

    这是我运行的代码 import timeit print timeit Timer a sorted x x 2 bla 4 boo 3 4 1 2 0 1 4 3 2 1 0 0 timeit number 1000 print time
  • 使用复选框来控制 Input.value (有一个令人讨厌的扭曲。)

    几天来我一直在研究使用复选框控制 UI 的方法 在 Stack 上一些成员的帮助下 我已经取得了很大的进展 但我的秃顶还没有完全停止 我一直在尝试通过在 UI 控制器旁边包含一个数值来进一步调整我的代码片段 该值稍后将在 web java
  • 使用 vanilla JavaScript 将事件绑定到动态创建的 HTML 元素 [无 jquery] [重复]

    这个问题在这里已经有答案了 我需要将事件附加到动态创建的元素 借助 jQuery 我可以使用以下代码对此进行归档 body on click my element function 如果我添加一个新的 my element 它会自动附加事件
  • 使用 MessagingCenter 和标准 .NET 事件处理程序向感兴趣的各方通知更改有什么区别?

    使用 MessagingCenter 和标准 NET 事件处理程序向感兴趣的各方通知更改有什么区别 下面演示了同一事物的两个 未经测试的 实现 public class FooClass public event EventHandler
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • 如何证明2条sql语句是等价的

    我开始用连接和子语句重写一个复杂的 SQL 语句 并获得一个看起来更简单的语句 我通过在相同的数据集上运行并获得相同的结果集来测试它 一般来说 我如何 概念上 证明这两个陈述在任何给定数据集中都是相同的 我建议学习关系代数 正如 Mchl
  • jquery addClass() 不适用于 event.target

    请帮忙 为什么是jqueryaddClass 不与event target 我已经编写了一个代码 它应该在单击时在目标上添加类 但它不起作用 它说 e target addClass不是一个函数 http jsfiddle net Lq9G
  • 如何使 WPF 中的窗口对鼠标事件不可见?

    我创建了这个类 它非常适合使我的 WPF 应用程序对鼠标事件透明 using System Runtime InteropServices class Win32 public const int WS EX TRANSPARENT 0x0
  • Android SyncAdapter 回调

    我已经按照 SDK 中的 SimpleSyncAdapter 示例项目的思路实现了 SyncAdapter AccountManager 和私有 ContentProvider 一切都运转良好 现在 当从远程服务器下载了设置了特定标志的新行
  • Python子进程:cmd退出时的回调

    我目前正在使用启动一个程序subprocess Popen cmd shell TRUE 我对 Python 相当陌生 但 感觉 应该有一些 api 可以让我做类似的事情 subprocess Popen cmd shell TRUE po
  • 当您使用 .html() 删除元素时,jQuery 中的事件侦听器是否会自动删除?

    在 jQuery 中如果我们使用 remove 如果要删除某些元素 则与该元素关联的所有绑定事件和 jQuery 数据都将被删除 但是如果我们用以下命令 删除 元素会发生什么 html 我们是否需要在更改任何 html 之前取消绑定所有元素
  • 从 onclick 属性调用 e.stopImmediatePropagation()

    如何从事件对象中获取事件对象onclick属性 我努力了 a href something html Click me a 另外 我也尝试过这个 a href something html Click me a 但控制台只显示 a 元素 我
  • 系数函数速度慢

    请考虑 Clear x expr Sum x i i 15 30 CoefficientList expr x Timing Coefficient Expand expr x 234 Timing Coefficient expr x 2
  • OpenGL:顶点越多,性能越慢

    我正在开发一个程序的一部分 其中给定 xyz 坐标集合 制作 3D 模型 我已经完成了这张图片所需的所有功能 即平移 旋转 缩放 但是给出的 xyz 坐标越多 程序运行速度就越慢 我的程序在处理 29 000 个坐标时运行得非常流畅 但当我
  • UI5 性能参数:data-sap-ui-preload 与 data-sap-ui-async

    不同的SAPUI5性能指南提到了两个关键参数 它们似乎具有相似的性质 但解释略有不同 data sap ui preload async https help sap com viewer b4b7cba328bc480d9b373c7da
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • 使用unittest时如何知道每次测试花费的时间?

    Unittest 仅显示运行所有测试所花费的总时间 但不单独显示每个测试所花费的时间 使用unittest时如何添加每个测试的计时 我想 目前不可能 http bugs python org issue4080 http bugs pyth

随机推荐

  • android ffmpeg opengl es 渲染电影

    我正在尝试通过 NDK 渲染视频 以添加一些 sdk 中不支持的功能 我正在使用 FFmpeg 来解码视频 并可以通过 ndk 进行编译 并使用this作为起点 我修改了该示例 而不是使用 glDrawTexiOES 来绘制纹理 而是设置了
  • 为什么不在每次 Flask 启动时都生成密钥呢?

    使用会话时 Flask 需要一个密钥 在我见过的每个示例中 密钥都是以某种方式生成的 然后存储在源代码或配置文件中 永久保存的原因是什么 为什么不在应用程序启动时简单地生成它呢 app secret key os urandom 50 密钥
  • 在单独的线程中运行 Windows 窗体

    我正在处理在表单中运行控件 但是表单本身对我来说没有任何价值 我本质上希望表单运行任务并返回一个值 但是为此我想使用 AutoResetEvent 之类的东西仅在函数调用完成时返回 这显然会阻塞表单线程并使其不可能为了完成任务 我为我的项目
  • IOError: [Errno 13] 权限被拒绝:

    我构建此代码是为了专门识别 XML 文件负载并从这些文件中提取坐标 这是我的代码 from xml etree import ElementTree as ET import sys string os arcgisscripting gp
  • Slick2D 字体不起作用

    我有 Slick2D 库并用 Java 制作游戏 我一直想知道 只是一个简短的问题 如何在 Graphics 对象上设置字体以使用不同的字体进行绘制 我无法让它发挥作用 我认为它与 AngelCode 有关 但需要某种不是 tff 的格式
  • 这个程序中的 fread 有什么问题吗?

    我是 C 语言的中级学生 我正在尝试制作一个银行管理程序 但首先我需要制作一个登录程序 所以我创建了以下程序之一 由于我最近了解了C中的文件I O 并且对fread和fwrite不太了解 我有一个文件 data txt 其格式如下 用户1
  • 如何使用新的 2017 ifort 编译此 Fortran 代码?

    我有以下使用 2017 年之前的 ifort 编译的 Fortran 代码 program parallel m contains character 500 function PARALLEL message i ss character
  • Jackson:如何在不修改 POJO 的情况下将现有属性编辑为 JSON?

    我需要编辑 POJO 中 现有字段 的名称 而不是添加 extra field 是否可以使用下面参考的链接方法 请注意我不想使用 JsonProperty注解 要求是 我有一个 POJO 并且希望每次都使用不同的字段名称 而不需要更改 PO
  • 无法在 Heroku 中查看 Express/React 应用程序(同时未找到)

    我在 Heroku 中查看我的 Node Express React 项目时遇到问题 成功将我的项目推送到 Heroku 后 当我尝试在 Heroku 中查看我的应用程序时 出现 404 错误页面 Heroku 日志显示concurrent
  • 如何使用 CasperJS 移动 jquery-ui 滑块

    有什么办法可以移动jQuery UI 滑块 with CasperJS 我也发现了这个github问题在寻找一种可能性时 只需单击滑块的左侧或右侧即可移动handle 但这对我来说也不起作用 任何想法 移动滑块的工作原理如下 casper
  • 在 Firefox 中检查元素标尺

    我想知道是否有任何方法可以在 Firefox 中查看标尺 就像 Chrome 检查元素标尺一样 Chrome 显示您当前的宽度 即 宽度 填充 标尺悬停时的当前宽度 see below Chrome screenshot for ref 它
  • Android 未知命令“紧缩”

    我刚刚在 Mac OS X 中安装了 Eclipse 和 Android SDK 我将项目导入到 Eclipse 但在运行项目时出现未知命令 crunch 错误 我应该如何解决这个问题 请帮我 我刚刚更新 Android SDK Platf
  • 如何让图表填满整个窗口

    我正在使用 QtDesigner 创建的应用程序中绘制图形 问题是 当显示图形时 图形空间和 mplwidget 空间之间会出现一个大的 灰色边缘 这使得绘图变小 那么我如何删除在主窗口中显示图形时出现的这个大 灰色边框 I would l
  • Amazon SES 使用 java 从 S3ObjectInputStream 对象读取存储在 s3 存储桶中的电子邮件

    我已经配置了我的AWS SES将所有传入电子邮件存储到对象键前缀为电子邮件的 S3 存储桶 我有一个 Java 应用程序 我正在尝试读取该存储桶中的所有对象 然后将它们移动到另一个存储桶中 以便只有未读的电子邮件保留在存储桶中 我使用以下代
  • 如何下载wordpress源码?

    我用他们的模板创建了一个 WordPress 网站 为了在另一个托管平台上托管我的 WordPress 网站 我需要我的 wordpress com 网站的源代码 包含所有 php 文件 有没有简单的方法可以做到这一点 这是我第一次使用 w
  • Windows Server 2019 Docker docker.exe:守护程序的错误响应:无法启动服务实用程序 VM(createreadwrite):

    我在 VMWare 中创建了 Windows Server 2019 VM 我尝试在那里运行 docker 容器 Ubuntu 但出现此错误 docker exe 来自守护程序的错误响应 无法启动服务 实用虚拟机 创建读写 我已经做了什么
  • 如何在 UIImage 上快速绘制/涂鸦线?

    我需要在 UIImage 中绘制 涂鸦一条线 如上图所示 我看到很多教程在 UIView 上涂鸦线 但不在 UIImage 中 用户在图像上涂鸦后 我想将其保存为新图像 有线条的图像 我该如何在 Swift 中做到这一点 我只能在 UIVi
  • Python 用多个分隔符分割字符串并查找使用的分隔符

    如何使用多个分隔符分割字符串 并找出使用哪个分隔符分割 maxsplit 为 1 的字符串 import re string someText someValue re split string 1 returns someText som
  • 运行时错误 - 无法访问文件

    我有以下 VBA 脚本 它可以保存工作簿 并且效果很好 但是 如果再次单击 commandbutton1 它会正确显示选项框 您要替换该文件吗 是 否 取消 是 选项工作正常 但 否 和 取消 选项会弹出错误框 RunTime error
  • Matlab全局变量可以在Matlab中产生更好的性能吗?

    我讨厌使用全局变量 每个人都应该这样做 如果一种语言无法使用全局变量 则应该对其进行更新 目前 当效率是目标时 我不知道在 Matlab 中使用全局变量有什么好的替代方法 据我所知 只能通过 4 种方式在回调之间共享数据 嵌套函数 geta