matlab 空矩阵耗时,性能 – 更快的方式通过空矩阵乘法初始化数组? (Matlab)

这很奇怪,我看到f更快,而g比你看到的慢。但是他们对我来说都是一样的。也许不同版本的MATLAB?

>> g = @() zeros(1000, 0) * zeros(0, 1000);

>> f = @() zeros(1000)

f =

@()zeros(1000)

>> timeit(f)

ans =

8.5019e-04

>> timeit(f)

ans =

8.4627e-04

>> timeit(g)

ans =

8.4627e-04

编辑可以添加1的f和g的结尾,并看看你得到什么时间。

编辑2013年1月6日7:42 EST

我正在使用一台机器远程,所以抱歉低质量的图形(不得不生成他们盲目的)。

机器配置:

i7 920. 2.653 GHz。 Linux。 12 GB RAM。 8MB缓存。

它看起来甚至我可以访问的机器显示这种行为,除了在更大的尺寸(1979年和2073之间的某个地方)。没有理由我现在可以想到的空矩阵乘法在更大的尺寸更快。

我会在回来之前多调查一下。

EDIT 2013年1月11日

在@ EitanT的帖子后,我想做一点点挖。我写了一些C代码,看看matlab可能如何创建一个零的矩阵。这里是我使用的c代码。

int main(int argc, char **argv)

{

for (int i = 1975; i <= 2100; i+=25) {

timer::start();

double *foo = (double *)malloc(i * i * sizeof(double));

for (int k = 0; k < i * i; k++) foo[k] = 0;

double mftime = timer::stop();

free(foo);

timer::start();

double *bar = (double *)malloc(i * i * sizeof(double));

memset(bar, 0, i * i * sizeof(double));

double mmtime = timer::stop();

free(bar);

timer::start();

double *baz = (double *)calloc(i * i, sizeof(double));

double catime = timer::stop();

free(baz);

printf("%d, %lf, %lf, %lf\n", i, mftime, mmtime, catime);

}

}

这里是结果。

$ ./test

1975, 0.013812, 0.013578, 0.003321

2000, 0.014144, 0.013879, 0.003408

2025, 0.014396, 0.014219, 0.003490

2050, 0.014732, 0.013784, 0.000043

2075, 0.015022, 0.014122, 0.000045

2100, 0.014606, 0.014480, 0.000045

正如你可以看到calloc(第4列)似乎是最快的方法。它也在2025年和2050年之间显着更快(我认为它将在2048左右?)。

现在我回到matlab检查相同。这里是结果。

>> test

1975, 0.003296, 0.003297

2000, 0.003377, 0.003385

2025, 0.003465, 0.003464

2050, 0.015987, 0.000019

2075, 0.016373, 0.000019

2100, 0.016762, 0.000020

看起来f()和g()都使用较小大小的calloc(<2048?)。但是在更大的大小f()(zeros(m,n))开始使用malloc memset,而g()(zeros(m,0)* zeros(0,n) 因此,通过以下解释分歧

> zeros(..)开始在较大的大小使用不同的(较慢?)方案。

> calloc也有些出乎意料地表现,导致性能的提高。

这是Linux上的行为。有人可以在不同的机器(也许不同的操作系统)上做同样的实验,看看实验是否成立?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事件对象及其属性

$(function(){$(input).bind(click,function(e){alert(e); //获取对象//event对象的属性alert(e.type);alert(e.target);alert(e.currentTarget);//得到监听元素的DOM&#xff0c;target是点的那个的DOM});$(input).bind(mouseover,function(e){alert(e.relatedTarget);});$(in…

百度网盘php文件怎么打开,如何通过网页版百度网盘下载大文件

最近老张需要在百度网盘下载一个较大的文件&#xff0c;结果他要我必须下载客户端才行&#xff0c;此背景下&#xff0c;在网站找了各种办法&#xff0c;什么模拟手机&#xff0c;F12查看下载链接都不行&#xff0c;最后找到了可行的办法。步骤如下&#xff1a;一&#xff1a;如…

matlab对信号加噪代码,Matlab给信号加噪声

在信号处理中经常需要把噪声叠加到信号上去&#xff0c;在叠加噪声时往往需要满足一定的信噪比&#xff0c;这样产生二个问题&#xff0c;其一噪声是否按指定的信噪比叠加&#xff0c;其二怎么样检验带噪信号中信噪比满足指定的信噪比。在MATLAB中可以用randn产生均值为0方差为…

洛谷 1057——台阶问题(递推与递归二分)

题目描述 有N级的台阶&#xff0c;你一开始在底部&#xff0c;每次可以向上迈最多K级台阶&#xff08;最少1级&#xff09;&#xff0c;问到达第N级台阶有多少种不同方式。 输入输出格式 输入格式&#xff1a; 输入文件的仅包含两个正整数N&#xff0c;K。 输出格式&#xff1…

在matlab中ungetfile后,11条Matlab实用小技巧

2011-02-25 15:361.在用循环画很多图时&#xff0c;为了减少对内存的占用&#xff0c;可以设置图像不显示&#xff0c;直接保存起来。其实也很简单&#xff0c;就是在plot等语句前加上一句&#xff1a;figure(visible,off)。这样画图时就不显示了&#xff01;2.记得很久以前就有…

ngix 创建新的网站

1. 进入ngix 的目录的conf 目录 的 vhosts 2. 复制一份新的v2.edc.com.conf 3. server_name : v2.edc.com root : /ali/...../目录 4. 重启nginx 服务 │ /etc/init.d/nginx start|stop|restart │ │ …

pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换

openssl 生成pkcs1格式的私钥&#xff0c;密钥长度2048位, (PKCS1)openssl genrsa -out private.pkcs1.pem 2048PKCS1私钥转换为PKCS8openssl pkcs8 -topk8 -inform PEM -in private.pkcs1.pem -outform pem -nocrypt -out private.pkcs8.pem逆过程&#xff1a;PKCS8格式私钥再…

php上传同一张图片,两种php实现图片上传的方法_PHP

图片上传在项目中经常用到&#xff0c;几乎没有任何一个项目可以脱离图片或者是文件上传。本篇我在这向大家介绍两种常规的上传方式。(注&#xff1a;在这里我们仅仅是对功能的实现&#xff0c;不去做过多的前端的样式)一、利用form表单上传此种方式是最原始的上传方式&#xf…

用C语言实现中文到unicode码的转换

转自: http://blog.csdn.net/qq_21792169/article/details/50379275 源文件用不同的编码方式编写,会导致执行结果不一样 由于本人喜欢用Notepad编辑器&#xff0c;该编辑器的好处是小巧灵活&#xff0c;但是有几个地方做的不足&#xff0c;但是我都能够很好的采取相应的措施来…

java位运算求幂,程序员必学:快速幂算法

前阵子&#xff0c;有小伙伴在我B站的算法教程底下留言小伙伴们有任何疑问或者希望我解说任何内容&#xff0c;都可以在我的小我私家B站或民众号(xmg_mj)留言哦&#xff0c;我会尽我最大能力、只管抽时间去写文章\录视频来回应人人。关于快速幂实在快速幂相关的问题&#xff0c…

java过滤器

过滤器 1、Filter工作原理&#xff08;执行流程&#xff09; 当客户端发出Web资源的请求时&#xff0c;Web服务器根据应用程序配置文件设置的过滤规则进行检查&#xff0c;若客户请求满足过滤规则&#xff0c;则对客户请求&#xff0f;响应进行拦截&#xff0c;对请求头…

memory php 变量,php入门-变量

打印一串字符。echo PHP学到家&#xff0c;走到哪儿都不怕&#xff01;;?>输出236的计算结果echo 236;?>.连接符echo "Good,"."morning!";?>注释//echo "欢迎同学们&#xff01;";echo 12345;?>什么是变量$var "学PHP&quo…

假设检验

假设检验分参数假设和非参数假设。 假设 先假设原假设H0&#xff0c;对应的反面叫做备择假设H1。SAS一般沿用的规则是NEYMAN和PEARSON提出的&#xff1a;在控制犯第一类错误的原则下&#xff0c;是犯第二类错误的概率尽量小&#xff08;即&#xff0c;原假设受到保护&#xff0…

jeesite在eclipse中部署

1&#xff1a;下载下来最新版本的jeesite&#xff0c;首先要在本地安装好maven运行环境 2&#xff1a;运行 bin/eclipse.bat 生成工程文件并下载jar依赖包 如果需要修改默认项目名&#xff0c;请打开pom.xml修改第7行artifactId&#xff0c;然后再执行eclipse.bat文件 3&…

php抖音关注列表,网页PHP抖音批量取消关注JS代码

在很多时候我们抖音关注的人太多&#xff0c;想要批量取消但是一个一个点击太麻烦了&#xff0c;如何解放双手批量取消关注呢&#xff1f;今天分享一段JS代码&#xff0c;可在线批量取消关注&#xff0c;需电脑才能操作。首先打开抖音创作服务平台登录&#xff1a;https://crea…

python 灰度改二值,Python Image 对验证码进行灰度和二值法处理 去掉边框

def binarizing(img, threashold):img img.convert("L") # 转灰度pixdata img.load()w, h img.sizefor y in range(h):for x in range(w):if pixdata[x, y] < threashold:pixdata[x, y] 0else:pixdata[x, y] 255return imgdef removeFrame(img, width)::para…

hadoop 2.7.3伪分布式安装

hadoop 2.7.3伪分布式安装 hadoop集群的伪分布式部署由于只需要一台服务器&#xff0c;在测试&#xff0c;开发过程中还是很方便实用的&#xff0c;有必要将搭建伪分布式的过程记录下来&#xff0c;好记性不如烂笔头。 hadoop 2.7.3 JDK 1.8.91 到Apache的官网下载hadoop的二进…

php 环境变量有什么用,什么是环境变量,Linux环境变量及作用

变量是计算机系统用于保存可变值的数据类型&#xff0c;我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中&#xff0c;环境变量是用来定义系统运行环境的一些参数&#xff0c;比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。值得一提的是&#xff0c;L…

Web Api 转

GET&#xff1a;生到数据列表&#xff08;默认&#xff09;&#xff0c;或者得到一条实体数据 POST&#xff1a;添加服务端添加一条记录&#xff0c;记录实体为Form对象 PUT&#xff1a;添加或修改服务端的一条记录&#xff0c;记录实体的Form对象&#xff0c;记录主键以GET方式…

matlab 刻度非均匀控制,MATLAB 出一张好看的图

1、坐标轴的视点(viewpoint)&#xff1a;从哪个方向看整个坐标系统&#xff0c;这决定了坐标轴的方向和位置&#xff0c;通过view函数实现视点的设置&#xff1b;view([z y ])&#xff1a;(将坐标系统想象为一座房子&#xff0c;而自己是个会飞的天使&#xff0c;最初你在房子的…