精华内容
下载资源
问答
  • 当然了理论上内存的容量确实是越大 运行程序的速度也就越快,但超过了一定的值也就等同与浪费了,可以这样理解,内存的作用大体可以看作硬盘、光区等较慢设备CPU的缓冲区。1.在进行读写任务是,硬盘的速度大约是...

    内存除了频率带宽等跟处理速度有关系之外,和本身的容量大小跟速度有没关系呢?为什么大一点会更好,跟它的工作原理有关吗?今天宏旺半导体ICMAX就和大家分享下。
    内存容量越大处理速度就越快吗?宏旺半导体一文辨真伪
    当然了理论上内存的容量确实是越大 运行程序的速度也就越快,但超过了一定的值也就等同与浪费了,可以这样理解,内存的作用大体可以看作硬盘、光区等较慢设备和CPU的缓冲区。
    1.在进行读写任务是,硬盘的速度大约是7200转-10000转/分钟,就算是最快的“读写”速度,也就是190MB/S,而市面上的CPU的本身主频一般都在1GHZ以上,所以CPU会把处理好的数据暂时放到内存中,而后在有内存写入硬盘中。
    2.在处理程序时,CPU要处理各个部件的发送过来的指令,而CPU在同一时间只能处理一个指令,这就要求其它部件进行等待! 由于价格的关系,CPU本身的缓存容量有限 这些指令不得不到内存中去等待寻址了。
    内存容量越大处理速度就越快吗?宏旺半导体一文辨真伪
    要知道我们的系统一但运行就要先占用一部分内存,然后省下来的部分来处理程序 ,而程序的每一个指令都要从硬盘经过内存,所以说加大内存容量,当然可以加快程序运行的速度。
    如果你运行一个程序这就好比你把一个仓库(硬盘)的原料(相当于指令)给工厂(cpu)加工,然后买到市场(完成命令),而内存就相当于运输的车,除了车上的司机(好比系统所必须占用的内存)那么剩下的空间越大,你一次拉过去的东西就越多,所以完成该项任务的速度就越快了,当然,如果汽车的速度快(相当于内存的工作频率),那么你完成一运输的时间就越短,在同样大小的车上,当然是速度快的车先完成任务了。

    这个就是为什么你提高了内存的容量就可以使速度加快的原理了,但是需要提醒的是,要提高速度不能只看运输(内存大小、速度),也要看看你的周边设备,都会影响你整体的效率,所以当你的车(内存)一次就可以吧所有的原料(指令)拉给加工厂(cpu)时,你的内存容量不需要再加了!如果还觉得速度慢,就要提高其他部件了!

    当然上述情况是在同类型存储中比较的,当然也存在不同类的存储介质,容量越小提取速度越快的,就容量而言,cpu的cache<内存<外存,而读取速度正好相反,外存<内存<cache。容量来说cache一般单位就是兆,内存现在几个G,外存动辄数百G甚至几个T。相反读取速度呢,cache能达到每秒数亿次,快的内存也就几十兆吧,外存就更别提了。CPU访问的话呢,肯定首先要和速度快的进行信息交互啊,所以cpu不能和外存直接交互,能和内存直接交互。
    内存容量越大处理速度就越快吗?宏旺半导体一文辨真伪
    今天科普文先到这里,欢迎关注宏旺半导体ICMAX,宏旺半导体在存储行业有十五年的经验,产品型号包含了EMMC、EMCP、UFS、UMCP、SPI、LPDDR、DDR、SSD、内存、TF卡等,应用于手持移动终端、消费类电子产品、电脑及周边、办公、汽车电子及工业控制等设备的各个领域。有关于存储不懂的问题都可以来问哈~第一时间回复。

    转载于:https://blog.51cto.com/14293659/2407970

    展开全文
  • 我在AWS m4.large(2个vCPU,8 GB内存)上运行,并且看到有关MySQLGROUPBY的行为有些令人惊讶.我有这个测试数据库:CREATE TABLE demo (time INT,word VARCHAR(30),count INT);CREATE INDEX timeword_idx ON demo(time...

    我在AWS m4.large(2个vCPU,8 GB内存)上运行,并且看到有关MySQL和GROUPBY的行为有些令人惊讶.我有这个测试数据库:

    CREATE TABLE demo (

    time INT,

    word VARCHAR(30),

    count INT

    );

    CREATE INDEX timeword_idx ON demo(time, word);

    我插入4,000,000条记录,这些记录具有(均匀)随机词“ t%s”%random.randint(0,30000)和时间random.randint(0,86400).

    SELECT word, time, sum(count) FROM demo GROUP BY time, word;

    3996922 rows in set (1 min 28.29 sec)

    EXPLAIN SELECT word, time, sum(count) FROM demo GROUP BY time, word;

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------+

    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------+

    | 1 | SIMPLE | demo | index | NULL | timeword_idx | 38 | NULL | 4002267 | |

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------+

    然后我不使用索引:

    SELECT word, time, sum(count) FROM demo IGNORE INDEX (timeword_idx) GROUP BY time, word;

    3996922 rows in set (34.75 sec)

    EXPLAIN SELECT word, time, sum(count) FROM demo IGNORE INDEX (timeword_idx) GROUP BY time, word;

    +----+-------------+-------+------+---------------+------+---------+------+---------+---------------------------------+

    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

    +----+-------------+-------+------+---------------+------+---------+------+---------+---------------------------------+

    | 1 | SIMPLE | demo | ALL | NULL | NULL | NULL | NULL | 4002267 | Using temporary; Using filesort |

    +----+-------------+-------+------+---------------+------+---------+------+---------+---------------------------------+

    如您所见,使用索引查询将花费3倍的时间.我并不感到惊讶,因为通过使用索引,查询可能不得不避免读取时间和单词列,但是不幸的是,索引是如此稀疏,因此它不会带来太多收益.相反,在检索计数时,它将直接扫描转换为随机访问模式.

    我只是想确认这就是原因,并且想知道是否有一个“紧凑规则”规定何时将索引用于GROUP BY时最终会带来更差的性能.

    编辑:

    我遵循Gordon Linoff的回答并使用:

    CREATE INDEX timeword_idx ON demo(time, word, count);

    与完整扫描相比,“覆盖索引”计算结果快10倍:

    SELECT word, time, sum(count) FROM demo GROUP BY time, word;

    3996922 rows in set (3.36 sec)

    EXPLAIN SELECT word, time, sum(count) FROM demo GROUP BY time, word;

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------------+

    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------------+

    | 1 | SIMPLE | demo | index | NULL | timeword_idx | 43 | NULL | 4002267 | Using index |

    +----+-------------+-------+-------+---------------+--------------+---------+------+---------+-------------+

    非常令人印象深刻!

    展开全文
  • 随着多道程序系统时分概念的普及,总有多个进程想再CPU上运行,当CPU在进程之间切换的时候,物理内存该怎么处理呢?进程之间的内存能相互隔离吗?方法一: 当进程切换时,可以将与进程有关的PC计数器,通用寄存器...

    随着多道程序系统和时分概念的普及,总有多个进程想再CPU上运行,当CPU在进程之间切换的时候,物理内存该怎么处理呢?进程之间的内存能相互隔离吗?

    方法一:
    当进程切换时,可以将与进程有关的PC计数器,通用寄存器以及内存中的所有内容都拷贝到磁盘中,当下次需要再次运行的时候,再将这些内容拷贝到内存中。
    这种方法十分暴力直接,但可惜速度太慢。于是乎有了第二中方法

    方法二:
    通过抽象,让每个进程都有一块地址空间,从进程的视角来看,每一个进程的地址空间都是相同的,编码从0KB~512KB;从操作系统的角度来看,每个进程的地址空间实际上是映射到不同的物理内存上的。映射的方式就叫做内存虚拟化,属于内存管理的内容。

    内存虚拟化目标

    前面提到为了让进程间不相互影响,所以尝试用虚拟化内存来实现。在这里再次重申一下内存虚拟化要达到的目标:

    1. 进程之间对内存是透明的。进程可以随意使用内存,就像没有经过内存虚拟化一样;
    2. 进程就好像完全拥有自己的私有内存一样,不与其他进程共享。
    3. 效率;在时间和空间上都要尽可能高效;

    虚拟化内存

    内存虚拟化主要是通过抽象,让进程和用户看到的内存是相同格式,并且拥有整个内存。 进程看到的就是虚拟内存,也称之为地址空间

    那么地址空间和物理内存如何进行一一对应呢?,进程如何通过虚拟内存访问到物理内存中的数据呢

    Address translation

    方法一:
    操作系统在生成进程的时候为每一个进程都分配两个寄存器分别保存:

    • base基址:进程地址映射到物理内存的
    • bound:为该进程允许分配的最大内存大小

    映射的方式很简单:
    物理地址 = 虚拟地址 + base;
    这种方式相对简单,但在这种情况下,需要为每个进程分配相对固定大小的内存。前面我们提到,进程中内存分为代码和静态数据去,栈内存区,堆内存区;如果为每个进程分配固定大小的内存,栈内存区和堆内存区就会相对较多没有被使用的内存。当有许多进程的时候,就会造成大量的内存浪费。(进程分配过小,进程运行将会出现异常)

    那么该如何解决上述内存浪费的现象呢?

    方法二:Segmentation
    在方法一中,是为每一个进程保存了一个base和bound;那为什么不为每一个segment保留一个base和bound呢?在进程中,内存被分为代码区,堆内存区和栈内存区;这三个是三个相对独立的segment,我们可以为每一个segment保存base和bound,这样每个进程的堆栈区可以定制化大小,这样就解决了内存浪费的问题。

    当我们标记segment的时候,我们怎么标记segment对应的是代码区,还是堆栈区呢? 这个时候可以考虑把虚拟地址的前两位弄出来,标记具体是哪一个segment,剩下的地址就表示在对应物理内存相对于base地址的偏移

    虽然解决了进程里内存浪费的问题,但又有新的问题出现:当进程较多的时候,每个进程都需要分配多个segment,那这些segment之间的内存该怎么处理呢? segment的内存被回收的时候,内存又该怎么处理呢?

    这里就涉及到空闲内存的管理了

    展开全文
  • 使用swap能让系统运行更多或更大型的程序,但由于swap的读写速度远逊于内存,频繁使用swap可能让系统程序有延迟卡顿。 大内存计算机swap有必要吗? 对于内存较小的计算机,swap是非常有必要的。swap的存在能让...
  • 第17章探究了将网桥路由器区别开来的秘密,第18章试图收集人们有关如何设计协议的经验知识。最后有一张术语表。我在第一次使用某个术语时会给出定义,但如果我没有给出定义,你也可以从术语表中找到。 本书被认为...
  • java面试题

    2013-04-12 10:39:17
    ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    第1章 声明初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16int32。然后根据实际的...
  • Everything-1.2.1.371

    2010-02-11 23:34:08
    对于每一卷,NTFS 都使用 USN 日志来跟踪有关添加、删除修改的文件的信息。Everything利用USN进行文件搜索时,速度超快。如果你的文件系统还是FAT32,而又想使用Everything的话,你需要转换你的分区格式了,如果你...
  • 引用类型原始类型具有不同的特征用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • 然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 23  2.8 我听说结构可以赋给变量也可以对函数传入传出。为什么K&R1却明确...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...
  • 引用类型原始类型具有不同的特征用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  • java 面试题 总结

    2009-09-16 08:45:34
    引用类型原始类型具有不同的特征用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
  •  本书是一本关于oracle database 9i、10g 11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构进程,锁闩,事务、并发多版本,表索引,数据类型,分区并行,以及...
  • 包括文件、内存结构进程,锁闩,事务、并发多版本,表索引,数据类型,以及分区并行,并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发...
  • o 6.13 考虑到有关空指针的所有这些困惑, 难道把要求它们内部表达都必须为 0 不是更简单吗? o 6.14 说真的, 真有机器用非零空指针吗, 或者不同类型用不同的表达? o 6.15 运行时的 ``空指针赋值" 错误是什么意思...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • MYSQL培训经典教程.rar

    2009-11-16 21:37:03
    8.5.4编译链接怎样影响MySQL的速度 203 8.5.5 总结 203 思考题答案 206 附录一 MYSQL 语言参考 217 1.1 数据类型参考:怎么写字符串数字 217 1.1.1 字符串 217 1.1.2 数字 219 1.1.3 十六进制值 219 1.1.4 NULL...
  • C#微软培训资料

    2014-01-22 14:10:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • 因此只要能够稳定运行操作系统,我们应当尽量把CAS参数调低,从而提高内存运行速度。反过来,如果内存运行不稳定,可以将此参数设大,以提高内存稳定性。 Act to Precharge Delay: 这个项目控制了给DRAM参数使用...
  • 此外,它还对事件日志 Windows 2000/XP 休眠文件(当休眠笔记本电脑时保存系统内存的地方)进行碎片整理。  Process Monitor  进程监视器,这是一个高级的Windows监视工具,不但可以监视进程/线程,还可以关注到...
  • 198 2、INSERT DELAYED 在客户机方的作用 199 8.4.4 对表进行优化 200 8.4.5 总结 201 8.5 服务器级优化 201 8.5.1 ...链接怎样影响MySQL的速度 203 8.5.5 总结 203 思考题答案 206 附录一...
  • 198 2、INSERT DELAYED 在客户机方的作用 199 8.4.4 对表进行优化 200 8.4.5 总结 201 8.5 服务器级优化 201 8.5.1 ...链接怎样影响MySQL的速度 203 8.5.5 总结 203 思考题答案 206 附录一...
  • vfp6.0系统免费下载

    2009-09-17 13:49:13
    答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 更新的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

内存和运行速度有关吗