首先声明,这里提到框架对性能的影响,只是针对非常特定的场景。
这篇博客还是源于之前的一个项目--持久配置中心。当时在压测的时候,我对并发去读配置的性能不是很满意。
看了代码,发现在Get的时候,还是处理了一些逻辑,之前一直以为是一个synchronized引起的,这个同步块中,是对一个计数的变量做操作,这个计数是用于判断,是否告诉当前请求的客户端,换一个服务器(为了降低本机压力)。把这个地方改为用Atomic的操作后,发现性能没有太多的提升,索性注释掉了所有的逻辑,直接返回数据。发现,好像还是不够快。我们是采用Spring MVC来完成的服务,后来直接用写了一个Servlet来提供服务,就快多了,开始用SpringMVC的响应时间平均在20ms左右,换成了Servlet后,就变为5-6ms了。
这里不是说框架不好,其实框架对开发是带来了很多的帮助,加快了速度,降低了开发成本,这里只是想提醒大家一下,对于特别关键性能相关的地方,还是要考虑下框架是否会可能带来性能的影响。对于特别关注性能的地方,是可以用看起来不那么优雅,设置可能有些ugly的方法来实现。
没有评论:
发表评论