2011-09-19 12:28:00|  分类: Matlab |  标签:|字号

起因是这样的,上周四上课的时候要画一个正态分布函数,我想都没想直接去了randn(10000),就是一亿个数据,结果用hist函数画图的时候,半天没有反应,居然溢出了。

mlgb的,我平常处理雷达图像的时候你溢出溢出我也就忍了,毕竟数据量是大,我也知道,windows搞不定,必须要用实验室的linux台式机;可如今弄个正态分布你都给我溢出,这是闹那般啊?!

实在不能忍,想起了matlab可以用那个经典的3G switch,于是google百度matlab 3G switch,按照教程一步一步来,果真设置没问题。之前可读的内存也就大概2G左右,如今virtual memory那一项明显增大到了3G.

这下可以了吧,于是兴冲冲地回到matlab 2011a,重新画我的正态分布函数。

马勒戈壁的,又溢出了!

我想不通啊,怎么搞的!不就算个正态分布么你都给我溢出,pack啊什么的指令统统没用,于是我愤怒了。

就当我不知错所考虑要不要买新电脑的时候,我顺手打开了电脑里的matlab 2009a(因为有一个程序是用2009a编译的,所以我一直留着2009a,只不过不怎么用),鬼使神差地又输入了一次相同的指令。

卧槽,居然出来了!

于是我茫然啊,怎么低版本反而比高版本更牛逼啊,想不通啊!

顺手打开matlab的memory指令和feature memstats,仔细看看,我终于明白了。

如果你输入memory指令,几个参数是这样的:

Maximum possible array:            1208 MB (1.267e+009 bytes) *

Memory available for all arrays:   2381 MB (2.497e+009 bytes) **

Virtual Memory (Address Space):

Total:                              2899 MB (b53e0000)

虽然换成3GB开关后,total virtual memory都是3GB了,但并不是3GB你都能用的,其实最重要的是上面两个参数。第一个,是能储存的最大数组的大小,第二个是能储存的所有数组的大小。也就是说,虽然我这里有2899MB的内存供matlab使用,其实最多能用到2381MB来储存数组,其他的,程序的别的地方也要用啊。而当我打开 matlab 2009a和2011a的时候,输入相同的指令,我发现,结果居然是完全不一样的!!

作为一个强烈的偏执症患者,我周末唯一做的一件事情,就是测试了几乎所有主流matlab版本的内存性能。安装matlab是一个漫长的坑爹的过程,我把结果罗列如下。

特此说明:以下结果是在同一操作系统、同一环境下,同时打开所有版本的matlab,输入同样的操作指令memory和feature memstats得出的结果,仅供参考(2011a除外,因为我后来手一抖把2011a删了,实在实在不想再装了……)。

操作系统系能:XP SP3操作系统,32位

CPU Intel Core2 Duo CPU P8600 @2.40GHz

3GB 物理内存,4.5GB虚拟内存

Matlab 7.0

Matlab 7.1 sp3

Matlab 2008a

Matlab 2009a

Matlab 2009b

Matlab 2010a

Matlab 2011a

Maximum possible array(能存放的最大数组)

1170M

1197M

1370M

1208M

1370M

1215M

950M

Memory available for all arrays(能存放数组的最大空间)

2414M

2454M

2470M

2381M

2419M

2353M

Memory used by MATLAB(Matlab使用内存)

3066M

3066M

3067M

3067M

3067M

3067M

3067M

Physical Memory (RAM)(物理内存)*

使用

954M

790M

942M

959M

934M

792M

空闲

2112M

2276M

2124M

2107M

2132M

2274M

总共

3066M

3066M

3066M

3066M

3066M

3066M

3066M

Page File (Swap space):(交换页)*

使用

864M

681M

848M

969M

994M

697M

空闲

6674M

6857M

6691M

6569M

6544M

6841M

总共

7539M

7539M

7539M

7538M

7538M

7539M

7539M

Virtual Memory (Address Space)(虚拟内存)*

使用

333M

296M

451M

526M

481M

464M

空闲

2566M

2603M

2447M

2373M

2418M

2435M

总共

2899M

2899M

2899M

2899M

2899M

2899M

2899M

Largest Contiguous Free Blocks:(最大连续存储块)**

第一块

1170M

1197M

1369M

1207M

1369M

1215M

950M

第二块

851M

851M

851M

850M

850M

850M

850M

总共

2414M

2454M

2415M

2288M

2353M

2353M*这三项值即是是同一版本,每次输入也会有变动,但变动总体不大。

**基本为固定值。最大连续存储块的第一块这个值和上面能存放的最大数组的值相对应,总共大小和能存放的数组最大空间相对应。

从这个表格中,我们可以得出以下结论:

一、所有测试结果的物理内存、交换页和虚拟内存的总数是一样的。但是有这么一个趋势,即版本越高,这三项占用的大小会越大。但总的对我的电脑来说,都是足够了。

二、即是是同一操作系统,不同的版本,最大连续存储块的值也是不一样的。于是这也解释了同一操作,为什么有的版本会溢出,为什么有的版本能算数来了。

总的来说,有这么一个趋势,只看a版本,就是随着版本越高,能存放数组的最大空间大小会越来越小,第一块(能存放的最大数组空间)的数值也在变小。这大概也很好理解,版本高了,加载的东西多了,启动一个matlab可能会多调用很多东西,因此能使用的空间也小了。我那引以为豪的最新2011a本版,居然当初只有可怜的950M,跟别的一比,难怪随便算个东西就溢出了。

7.1实际上是7.0版本的sp3补丁,因此总体性能全部优过7.0,这个不足为怪。即是放到所有版本中,matlab7.1的能存性能也是出众的,因此强烈推荐大家使用这个版本。

除此之外,2008a也是一个不错的版本,本来就是一个经典版本,从性能来看,似乎也很不错,存放的最大数组居然达到了1370M,比7.1版本还好的多,让我很开心。

2009a 版本似乎有些bug,总体性能很一般,几乎跟2010a一模一样,却差了2008a挺大一截,而且2009a安装的时候有特别严重的bug,只要我选择自定义安装,每到97%的时候必定会出现模块注册失败报错的现象,完全安装却没有问题,研究两天未果,虽然好像目前看不出报错的后果在那里,但是报错本身,已经足够让我这个偏执症患者火冒三丈了,而我又特别不想装三四个G的无用的模块到我电脑里……可是我一直用的那个图像处理软件却是2009a编译的,所以我还必须用2009a或以后版本,崩溃啊……

2011a就不说了,只能说我电脑挫,等我有了64位操作系统再来装吧……

就在昨天晚上,我突然想到我从来没有装过b版本,那这一次就装b吧,但愿这次装b不会遭雷劈。下了一晚的2009b的种子,自定义安装,memory,哇,性能居然如此优良,整体性能都比2009a好了一截,简直和2008a没有任何区别,真是甚合我意啊。原因?既然matlab自己都说了b主要是对a版本的补丁,那么我猜b是把傻*的a改的更好了?我猜是吧。

通过这一番折腾,我终于把matlab各个版本搞得差不多了,以后再也不想再装matlab了……至于别的版本,什么2008b啊,2007a啊,欢迎大家测试,如果真有蛋疼的测试了所有的,欢迎告诉我结果……

64位matlab扩大内存的方法,Matlab增大内存方法外传及性能测试报告相关推荐

  1. 64位系统使用Access数据库文件的彻底解决方法

    64位系统使用Access数据库文件的彻底解决方法 最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是 ...

  2. 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)

    解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置) 参考文章: (1)解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PL ...

  3. Windows 7 64位用STC ISP下载51单片机程序的方法

    Windows 7 64位用STC ISP下载51单片机程序的方法2011-09-08 14:17 1  首先在宏晶的主页 http://www.stcmcu.com/ 下载最新的 STC-ISP.E ...

  4. win7 64位系统安装office2013后图标显示不正常解决方法

    #win7 64位系统安装office2013后图标显示不正常解决方法# 1 下载filetypesman,软件为绿色版,不用安装,可直接打开使用 2 查看Word.Excel.PPT的安装位置,后边 ...

  5. win7纯净版64位系统把exe文件注册成为系统服务的方法

    现在很多的程序服务都是以客户端的形式存在的,就是这样广大win7系统用户不得不在电脑里面安装这些客户端.每次开机的时候我们都要先启动客户端,接着进入相应的文件夹,很麻烦.那么有没有更方便的办法呢?其实 ...

  6. 64位进程隐藏不蓝屏_浅析Linux 64位系统虚拟地址和物理地址的映射及验证方法...

    前言 有好久没更新了,这段时间发生了挺多大喜事哈.但是也还是有挺久没更新了,不得不意识到自己是个小菜鸡,就算是小菜鸡也要做一只快乐小菜鸡.就算更新慢但是我依然会持续更新,因为更文使我快乐. 虚拟内存 ...

  7. 32位系统 和 64位系统 C 程序中 为什么 指针的内存大小的不一样

    以下均为自己猜想: 32位系统是因为有32根地址总线 ,64位系统由64根地址总线 所以从根本上有了32位和64位的系统的根本区别 指针就是地址,所不管什么类型的指针在32位的系统上,就是一个32位的 ...

  8. 64位系统使用Access 数据库文件的彻底解决方法

    最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没 ...

  9. win7 64位VC串口控件打不开解决方法

    写了个MSComm的串口通信程序,在没有安装Vc的机器上没有办法运行.需要手动注册控件. 不过手动注册可以写成bat文件来完成.首先是建一个文件夹,64位系统将Windows/SysWOW64(32位 ...

  10. kiscore sys丢失_Win7旗舰版64位上提示无法正常运行金蝶专业版的解决方法

    最近有用户想在Win7旗舰版64位上,安装个金蝶专业版的软件使用,可是一直出现运行失败,提示无法正常运行,对此呢?这个金蝶专业版软件都是财务类的人员在使用的,对管理很有帮助,但是一直无法正常运行,让很 ...

最新文章

  1. day9 线程与进程、队列
  2. Android画图最基本的三个对象(Color,Paint,Canvas)
  3. PhpStorm 注册相关
  4. shell批量创建随机文件名格式文件
  5. visual studio 没有属性页_驯龙物语10月14日更新|新增快捷购买页签
  6. 抓取新浪的每日星座运势
  7. “内存不足”的九大原因及解决方法
  8. AIR访问操作系统剪贴板粘贴操作延迟呈现解决办法
  9. iPhone7,苹果最后的摇钱树
  10. 7-5 删除字符串中的子串 (20 分)
  11. 邮件合并保存为一个个单独的文档_你还在为考计算机二级烦恼吗? 基本操作步骤分享...
  12. Cisco ISO 计划命令 kron实现配置定时自动备份
  13. 线结构光传感器的标定
  14. 计算机技术与软件专业技术资格考试(初级程序员)(一)
  15. HttpClient 同时支持发送http及htpps请求
  16. Redis中的数据类型及其应用场景
  17. html图片大小单位,mm单位是什么?
  18. c++ qt 操作Excel 实现冻结窗格的功能。
  19. [Done]FindBugs: boxing/unboxing to parse a primitive
  20. 如何在Mac上安装的Skype

热门文章

  1. 软件外包公司的入职须知
  2. 算法设计与分析股民解套问题
  3. 使用pip安装pymqsql,出现Cannot unpack file xxx的问题的解决以及pip安装速度慢或出现readtime out问题的解决。
  4. android 获取SIM卡的类型··
  5. csapp实验记录 - Cachelab partA
  6. python实现通讯录管理系统_python练习(通讯管理程序)
  7. 关于windows7 家庭版 中的各种坑
  8. 今日芯声 | 别乱拍照!多位英国明星iCloud被黑裸照泄露
  9. 企业员工活动打卡收集照片、收集视频的小程序
  10. 凉拌洋葱怎么做简单又好吃