MongoDB 是高性能数据,但是在使用的过程中,大家偶尔还会碰到一些性能问题.MongoDB和其它关系型数据库相比,例如 SQL Server .MySQL .Oracle 相比来说,相对较新,很多人对其不是很熟悉,所以很多开发.DBA往往是注重功能的实现,而忽视了性能的要求.其实,MongoDB和 SQL Server .MySQL .Oracle 一样,一个 数据库对象的设计调整.索引的创建.语句的优化,都会对性能产生巨大的影响. 为了充分挖掘MongoDB性能,现简单总计了以下18条,欢…
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周…
从零开始写一个武侠冒险游戏-8-用GPU提升性能(3) ----解决因绘制雷达图导致的帧速下降问题 作者:FreeBlues 修订记录 2016.06.23 初稿完成. 2016.08.07 增加对 XCode 项目文件的说明. 概述 现在轮到用 mesh 改写那个给性能带来巨大影响的状态类了, 分析一下不难发现主要是那个实时绘制并且不停旋转的雷达图拖累了帧速, 那么我们就先从雷达图入手. 开始我感觉这个雷达图改写起来会比较复杂, 因为毕竟在状态类的代码中, 雷达图就占据了一多半, 而且又有实时…
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目. 开源地址:https://github.com/NewLifeX/X(求star, 754+) 扩展查询 前文<[NewLife.XCode]实体类详解>中有讲到扩展查询,XCode生成实体类代码时,在模型类有一个…
摘要 数据库性能对软件整体性能有着至关重要的影响,对于Mongodb数据库常用的性能优化方法主要有: 范式化与反范式化: 填充因子的使用: 索引的使用: 一. 范式化与反范式化 范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式.在数据库设计阶段,明确集合的用途是对mongodb数据库性能调优非常重要的一步.根据集合中数据最常用的操作,对于频繁更新和频繁查询的集合,我们最需要关注的重点是他们的范…
 Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Android ViewPager内在的加载机制,导致一个比较严重的加载性能问题,具体来说,假设一个ViewPager中有n多个Fragment,那么ViewPager在初始化阶段将一次性的初始化FragmentPagerAdapter中的至少3个Fragment(如果Fragment多于3),创建和加载Fra…
很多时候,为了提升性能,我们可以给数据库访问层做缓存. 以下几步可以完成这个任务:1. 使用自定义的 XPObjectSpaceProvider1.1. 创建自定义的 XPObjectSpaceProvider 类,派生类中需要重写CreateDataLayer 方法去创建一个 IDataLayer 对象,连接到 DataCacheNode. 1.2. 让XAF在 XafApplication.CreateCustomObjectSpaceProvider 事件中,或重写  theXafAppl…
监控 Linux 性能的 18 个命令行工具 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的工具,您可以 挑选适用于您的监控场景的…
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目. 开源地址:https://github.com/NewLifeX/X(求star, 743+) 为何需要扩展属性 XCode不支持多表关联查询,单表查询利于优化以及分表分库,一切Join都可以借助扩展属性实现…
性能 以下数据都是在千兆网络下测试的结果 写入 数据量的增大会导致内存占满, 因为mongodb会将数据尽可能地载入内存, 索引占用的空间也很可观非安全模式下, 速度取决于内存是否占满能差一个数量级, 占满时大概1~2MB/s, 未占满时大于20MB/s安全模式下, 速度也取决于内存是否占满, 但是波动较小. 占满时为非安全模式的一半不到, 约1MB/s, 未占满时有7~8MB/s批量写入和单个写入速度没区别, 主要受IO速度限制 -- 如果考虑驱动带来的通信时间, 在大量写入时还是推荐使用批量…
Atitit 提升进度的大原则与方法  高层方法  attilax总结 生产力的提升点 1.1. 管理,管理的发展发展非常缓慢,1 1.2. 方法论(前后分离,dsl等)1 1.3. 工具( 工具链 甚至包括类库等)1 1.4. 积累(类库,框架,开发平台)1 1.5. 参考资料1 1.1. 管理,管理的发展发展非常缓慢, 期间当然出现了一些东西,例如...等等,但是远没有好上1000倍 事实上,近几十年来的努力主要体现在工具以及累计沉淀等方面 1.2. 方法论(前后分离,dsl等) 抽象级别越…
paip.提升性能--多核编程中的java .net php c++最佳实践  v2.0 cah 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax //////////多核编程的方法:  1.等候jvm等直接支持多核  2.框架实现 OpenMP   3.使用并发api  (FutureTask.ExecutorService  ) 推荐  4.使用传统muilt thre…
一.简介 Async/Await在.Net Core中真的是无处不在,到处都是异步操作,那为什么要用?有什么作用?别人说能提升性能?网上一堆文章看的绕晕了也没说清楚, 所以这里从理论,实践,原理一个个解开这些疑问. 二.Async/Await有什么用? 1.Async/Await用法示例 用法很简单,这里就不详细说具体怎么用了,只提供一个示例,我们的目标是研究它的作用. public class AsyncAwaitTest { public void Start() { Console.Wri…
    在SQL Server中,SQL语句的执行是依赖查询优化器生成的执行计划,而执行计划的好坏直接关乎执行性能.     在查询优化器生成执行计划过程中,需要参考元数据来尽可能生成高效的执行计划,因此元数据越多,则执行计划更可能会高效.所谓需要参考的元数据主要包括:索引.表结构.统计信息等,但还有一些不是很被注意的元数据,其中包括本文阐述的Check约束.     查询优化器在生成执行计划之前有一个阶段叫做代数树优化,比如说下面这个简单查询:         图1.简单查询       查询…
从最初的nagios到现在强大的zabbix 3.0,我想说,不以性能为前提的开发和监控都是瞎扯淡? 首先我对这两款监控软件的认识: zabbix,很多企业都在用,给人的感觉是很炫,不过我个人觉得虽然它功能强大,能绘制出狠酷的图像,但是在你看到他“美丽”面时,是否有想到他对原库.系统的“伤害”,是否有考虑过对于某些指标真的有实际意义. zabbix监控服务器:通过agent将相关数据以json方式插入数据库中,然后通过应用去调取数据库的内容展示出来. zabbix监控数据库:通过数据库用户(授予…
paip.提升性能--多核cpu中的java/.net/php/c++编程 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax ////////////////目前情况 需要一个处理50w行的文件,按行进行分词..需要50s才能完成.. 经过调试,瓶颈在这个代码上... TokenStream ts = Analyzer.tokenStream("", reader…
paip. 提升性能---hibernate的缓存使用 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax 除了延迟加载.迫切外连接.查询过滤等,可以使用在的内存缓存比如memcache Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载.   第二级是由sessionFactory控制的进程级缓存.是全局共享的缓存,凡是会调用…
paip.提升性能---mysql 优化cpu多核以及lan性能的关系. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax //////环境 双核2.9g , 内存2g  ,XPSP2 mysql5.6 ,myisam 50W数据insert,需要50s...平均1w/s的速度了.呵. /////cpu多核大幅提升mysql性能 传输myisam,10w数据.20连接.. 在…
paip.提升性能---mysql 性能 测试以及 参数调整.txt 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax /////////环境 xpsp3   cpu2.1g  单核.  mem :2g ----------1000>1   1.8s "D:\MySQL56\bin\mysqlslap.exe"     --concurrency=1 --au…
paip.提升性能---jvm java 工具使用. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax linux: top,sar,vmstat,iostat,pidstat windows: pslist jps -m -l -v 可查看,主函数全路径,MAIN参数,jvm参数. jstat:  jvm内存查看. jinfo :jvm 信息. jmap: 导出core d…
paip.提升性能----jvm参数调整.txt 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax jvm内存 1.stack    2.heap    3.class method 区.. 1.stack xss设置..每个线程的使用内存尺寸. 要是xss太大,线程量会变小...因为总体stack区不便... 总stack区尺寸也能以及heap有关..反向关系.. 2.he…
paip.提升性能---协程的使用. 近乎无限并发的"微线程" 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax 协程,又称微线程和纤程等,Fiber,即纤程..协程有时也被叫做用户态线程..据说源于 Simula 和 Modula-2 语言( 现代编程语言基本上都有支持,比如 Lua.ruby 协程是用户空间线程,操作系统对其存在一无所知,所以需要用户自己去做调度…
paip.提升性能---并行多核编程哈的数据结构list,set,map vector/copyonwritearraylist 都是线程安全的. 或者经过包装的list ::: collections.sysnchronizedList(list); 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax 以读为主.copyonwritearraylist 性能高..大概高一倍.…
paip.提升性能---list,arraylist,vector,linkedlist,map的选用.. arraylist,vector基本一样,但是,vector线程安全的. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax 1.append() arraylist效率高,3倍与linklist 2.add2AnyIndex() 特别是放的个最前面. linklist效…
paip.提升性能---string split 大概一万次就能看到慢的兰.. /////split 慢的原因.因为使用了正则表达式的,这样,就慢的了.. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax String.split(regex)事实上简单的调用了Pattern.compile(regex).split(this, limit),且每次compile()都会返回…
paip.提升性能----数据库连接池以及线程池以及对象池 目录:数据库连接池c3po,线程池ExecutorService:Jakartacommons-pool对象池 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax //////////为什么要使用数据库连接池 建立连接是一个费时的活动,每次都得花费0.05s-1s的时间,而且系统还要分配内存资源. 对于共享资源,有一个…
paip.提升性能3倍--使用栈跟VirtualAlloc代替堆的使用. #----为什么要设计堆栈,它有什么独特的用途? 为了性能 ....  堆比栈的性能 也有的说法为了编程容易...这个是错误的.因为使用堆+func也能实现编程简单地.. #----为什么stack 比堆快,stackAccess 要快两到三倍 主要的2点::  使用堆额外的操作多,而且机器硬件上直接支持栈操作.. 堆栈都是一段内存条中的内存区域,感觉上,应该上没有多大的访问速度差别..但是,实际上,还是有很大的的速度效率…
paip.提升性能----硬盘不同转速不同缓存对比转 西数 WDC WD2500BEVT-08A23T1 ( 250 GB / 5400 转/分 ) 5400转 8M缓存 单碟250 GB      产品    日立 HGST HTS725050A7E630 大小    500 GB 转速    7200 转/分 硬盘已使用    共 15 次 固件    GH2OA420 接口    SATA III( 数据传输率    600 MB/秒 特征    S.M.A.R.T,  APM,  48-…
paip.提升性能----java 无锁结构(CAS, Atomic, Threadlocal, volatile, 函数式编码, 不变对象) 1     锁的缺点 2     CAS(CompareAnd Swap/Set)操作automic数据类型AtomicLong,AtomicReference(Java提供的CAS操作) 3     Threadlocal 4     内存屏障(MemoryBarries)和(javavolatile)代替传统lock. 5     . Disrupt…
从零开始写一个武侠冒险游戏-7-用GPU提升性能(2) ----把地图处理放在GPU上 作者:FreeBlues 修订记录 2016.06.21 初稿完成. 2016.08.06 增加对 XCode 项目文件的说明. 概述 用 mesh 改写地图类, 带来的一大好处是控制逻辑可以变得非常简单, 作为一个地图类, 最基本的控制逻辑就是显示哪一部分和地图如何卷动, 而这两点可以通过 mesh 的纹理贴图非常容易地解决, 因为在 OpenGL ES 2.0/3.0 中, 可以通过设置纹理坐标来决定如何…