最近实验室电脑的ff不知怎么老是崩溃,就只好转到很讨厌的多进程的chrome上面了(好像二者内存占用差不多的样子,不过chrome总是一个标签一个进程好难过)
由于对scribefire的偏爱,只好重新配置一下了,在把github pages搞定之前,博文就发到oschina比较好呢
闲言少叙,很久没有发博文总结了,正好定定自己的内心,耐心的把最近的东西总结一下
1.matlab时间函数
最近程序跑的很慢,于是就想到了优化的一些东东,首先先看哪些函数跑的慢啦
初级手段:tic;toc;
tic是matlab开始一个计时器timer,toc则记录从计时器到该时刻的时间,一般都是用cpu time来表示
一般来说一个程序只需要一个tic就可以了,如果需要看特定的时间间隔,可以使用
b=tic; program; toc(b);
就可以决定查看从哪个时间点到现在的时间间隔了
中级手段:profile
profile有几种开启方法,第一种是从菜单栏“desktop”-“profiler”进入,选择代码文件,运行,运行之后会生成一个类似于htm帮助文件的东西供查看,从中我们就可以看出每个函数的运行时间,并且在生成的文件里,函数运行时间越长,其标注的颜色就会越鲜艳
第二种就是在代码中加入了在程序开头
profile on
程序结束则
profsave(profile('info'),'要保存的文件名')
保证能够自动保存结果,程序结束一般会自动打开生成的profile文件
高级手段:额,高级,高级我怎么找不到了。。。
那我就顺便分享一下自己的估计时间代码好了,就是估计程序大概什么时候跑完,一般是循环里的,当然每次循环时间不一样啦,所以这只是一个没有优化的版本
abt=(snr-isnr)*bt; s=datestr(datenum(clock+[0 0 0 0 0 abt]);) disp(['estimated end time is',s]);2.matlab 程序的优化手段
参考https://www.mathworks.cn/webex/recordings/cn_100422_SpeedingUpMatlab/index.html
没有看完,先总结一下好了
应该说matlab既然叫做矩阵实验室,那么其最重要的一个特性就是矩阵运算非常的快,这似乎还是相对于c语言而言,因为其能够对矩阵整体操作,使得c语言无法望其项背。
所以说,matlab优化一定要注意能不能将for循环转换为矩阵操作,赋值能不能矩阵整体赋值等等,甚至于(:)操作都要尽量避免
matlab由于存储数据一定要连续空间,预先分配空间,以及变量的重复利用也很关键。需要注意的是reshape是会重新分配空间的,所以并不能节省很大的性能。
并行操作也是一个很好的节约时间的方法,parfor以及spmd的应用,当然并行化的操作需要函数编写时注意可以并行才可以
3.github与eclipse结合
其实这个东西也纯属偶然了,因为抛弃了vs,而这个eclipse呢,每次总是弹出来git的提示框,烦死众人啊, 想想自己当年配置git过于繁琐结果放弃了,既然能够集成不如试一下好了,主要参考了
阿土的博客
http://www.blogjava.net/zJun/archive/2012/03/27/372752.html
二位关于egit的设置。
首先要在help->eclipse marketplace,然后在search tab页上find “egit”,找到后直接install.
当然可能是我的eclipse版本问题,没有搜到egit,而是在egit官方下载的地址找到贴入下载的,注意给出的下载地址要用eclipse下载而不是浏览器哦
下载后自然是安装了,安装完了之后我用eclipse生成了ssh key, 即在window-preferes-general-network-ssh2,点击key management,然后generate rsa key,然后保存private key 到自定义目录即可
然后export via sftp,弹出窗口填入[email protected],这样目录里的又多了一个known_hosts文件
用记事本把id_rsa.pub打开,复制内容到github网站里的ssh keys中即可
然后重启eclipse(file菜单里有重启选项)
据阿土的博客描述,下一步就可以直接push了,然而我大概是操作有点问题吧,总之直接push的时候有些"rejected to fast to forward"错误,一直没有push上。所以就先import了github上的repository,即从file菜单中的import,填入git上的 项目url,将其import到本地。
修改之后再在项目上右键-team-commit。commit就是commit到本机的git库,然后选择push就可以与github上的同步了。
是不是很炫? 嘿嘿