随笔分类 -  性能分析

摘要:虽说消息队列的用法很简单:PUB/SUB, PRODUCER/CONSUMER,不过真做起来还真麻烦。先说下原始需求:Web前端发送命令消息,后端Consumer处理,然后前端得到结果需要支持Windows服务很快,下图就出来了:先来分析分析:前端怎么知道后端已经处理完成?前端如何在处理完后的第一时... 阅读全文
posted @ 2014-10-21 22:24 McKay 阅读(5342) 评论(1) 推荐(6) 编辑
摘要:一致性环Hash算法有一个大用处就是解决Memcache服务器down机问题的。目的是增加或者移除Memcache服务器后,最大限度的减少所受影响。理论方面的就不介绍了,网上有太多资料了,请大家自己搜索搜索。在此写了一个ConsistencyRing类来实现算法,具体代码在此下载。测试类如下:public static void Test() { { ConsistencyRing cr = new ConsistencyRing(); Console.WriteLine("============... 阅读全文
posted @ 2013-12-17 23:57 McKay 阅读(2679) 评论(6) 推荐(4) 编辑
摘要:我们先来看看本人对下面这两个名词的个人见解:软件架构:几乎每个软件系统的架构都是不同的,因为软件架构的第一步就是根据当前项目的重要需求及约束来制定一个个技术决策。软件框架:可以分成行业框架和通用框架。通用框架是对大多数软件项目常用的模块(底层+高层)进行封装(同时暴露热点)的一个集合,能提高开发速度以及质量行业框架是针对某特定领域,把类似领域逻辑提取出来进行封装(同时暴露热点)的一个集合,能提高开发速度以及质量行业框架可以是基于通用框架之上的。站在架构师的角度,针对架构的开发,会慢慢演变为针对框架的开发(由于需要考虑复用以及对开发人员友好API特性)伸缩性:一般是指机器级别的横向扩展,如:we 阅读全文
posted @ 2013-05-27 21:52 McKay 阅读(7124) 评论(25) 推荐(5) 编辑
摘要:要想性能高,缓存是关键,缓存处理更是关键最近一直在关注性能方面,回想起以前写cache的场景,纠结啊,一坨一坨的同步代码,都写在了业务方法中,更要命的是由于涉及到取缓存代码导致了多个方法中同时牵涉了很多处理缓存的代码、结构性基本上没有。由此粗略写了这个EventFramework,还没有优化,由于用到了反射,所以效率不高,还需要优化(今天刚搞出来的。。。)代码下载这个EventFramework能够将业务方法和相关event分离开(事件订阅),比如:事件订阅:Order.Add函数调用后,EventFramework能根据订阅的event,逐一进行调用(缓存处理可以放在这里,对处理缓存的结构比 阅读全文
posted @ 2013-04-25 10:28 McKay 阅读(3620) 评论(4) 推荐(3) 编辑
摘要:性能低主要是由于I/O操作导致的延迟,导致了等待 ==>CPU很闲,处理速率却上不去解决办法: 减少I/O操作: 加入缓存来缓解I/O操作AppFabric或Memcached让出主线程,开启单独线程来处理I/O操作(主线程就能处理更多的IIS请求)PageAsyncTask, Parallel把大面积的数据(比如某字段中保存了1w个字符串,并且select了多行...OMG!),压缩后保存到磁盘,也能减少I/O消耗的时间ICSharpCode.SharpZipLib.dll如果系统是分多个物理计算机通信的,也要压缩message的内容,比如WCF自定义MessageFormat... 阅读全文
posted @ 2013-04-24 15:50 McKay 阅读(1123) 评论(3) 推荐(2) 编辑
摘要:本篇通过一小段代码的console程序来进行性能的分析以及改进、直到后面的改进前、改进后性能比较结果。先看console代码(源代码下载):static void Main(string[] args) { int i = 10000; while(i-->0) { Core c=new Core(); c.Process(DateTime.Now.ToString()); } }public class Core ... 阅读全文
posted @ 2013-04-19 10:48 McKay 阅读(16416) 评论(13) 推荐(47) 编辑