随笔分类 - 性能优化
摘要:习惯在C#代码中写str+="xxx";这样代码的请注意啦,如果这种操作是针对单个变量作很多次叠加操作的,很有可能导致性能降低。大家都知道string与StringBuilder的区别,这里就不说了,来看看例子,震撼一下:分别是测试普通字符串进行5w次叠加操作 vs StringBuilder进行5...
阅读全文
摘要:考虑到sql server以及c#,最多只能用decimal类型,也就是29位的数字,做了下面这个数字型id生成器:class Program { static void Main(string[] args) { int i = 100000; Timing t = new Timing(); t.Start(); while(i-->0) UniqueIdGenerator.Next(); t.Stop(); ...
阅读全文
摘要:Taobao有她自己的分布式session框架,.net阵营也不能落后了,在下做了个基于MongoDB的支持最多26台MongoDB的分布式Session框架。先看看配置文件: SessionDB mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://localhost mongodb://...
阅读全文
摘要:在这篇文章中,EventBus实现 - 发布订阅 - XML加载所适用的范围只是本机的事件传播,要是牵涉到多台服务器之间的事件传播就不行了,解决办法有用msmq解决的,Node.js解决的,也有用redis的发布订阅解决的,这次用C# socket来实现,能实现立刻推送事件到所有订阅了相关event的server上。这次的子系统适用的场景如下:主要分2个部分:各个server使用的Event Bus Broker以及Event Bus Server。Broker与Server之间的通信协议就3个:ME、Subscribe、Publish。分别代表:我的名字是、我要订阅的事件是、我触发事件。Ev
阅读全文
摘要:所谓半同步半异步是指,在某个方法调用中,有些代码行是同步执行方式,有些代码行是异步执行方式,下面我们来举个例子,还是以经典的PlaceOrder来说,哈哈。PlaceOrder的主要逻辑:public bool PlaceOrder(OrderInfo order){ //验证Order合法性 //OrderInfo增加到仓储 //生成order的pdf //通知客户,email方式}我们假设做出如下决定:public bool PlaceOrder(OrderInfo order)...
阅读全文
摘要:我们先来看看本人对下面这两个名词的个人见解:软件架构:几乎每个软件系统的架构都是不同的,因为软件架构的第一步就是根据当前项目的重要需求及约束来制定一个个技术决策。软件框架:可以分成行业框架和通用框架。通用框架是对大多数软件项目常用的模块(底层+高层)进行封装(同时暴露热点)的一个集合,能提高开发速度以及质量行业框架是针对某特定领域,把类似领域逻辑提取出来进行封装(同时暴露热点)的一个集合,能提高开发速度以及质量行业框架可以是基于通用框架之上的。站在架构师的角度,针对架构的开发,会慢慢演变为针对框架的开发(由于需要考虑复用以及对开发人员友好API特性)伸缩性:一般是指机器级别的横向扩展,如:we
阅读全文
摘要:要想性能高,缓存是关键,缓存处理更是关键最近一直在关注性能方面,回想起以前写cache的场景,纠结啊,一坨一坨的同步代码,都写在了业务方法中,更要命的是由于涉及到取缓存代码导致了多个方法中同时牵涉了很多处理缓存的代码、结构性基本上没有。由此粗略写了这个EventFramework,还没有优化,由于用到了反射,所以效率不高,还需要优化(今天刚搞出来的。。。)代码下载这个EventFramework能够将业务方法和相关event分离开(事件订阅),比如:事件订阅:Order.Add函数调用后,EventFramework能根据订阅的event,逐一进行调用(缓存处理可以放在这里,对处理缓存的结构比
阅读全文
摘要:性能低主要是由于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...
阅读全文
摘要:本篇通过一小段代码的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 ...
阅读全文