`
hypercube1024
  • 浏览: 85262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

造了个轮子^_^,firefly应用程序框架,性能大幅超越spring3MVC和Struts2,含测试报告

    博客分类:
  • java
阅读更多

现在的开源框架都是大而全,动辄xxMB的jar包,感觉用不了那么多的功能,而且性能有些不尽如人意。所以还是自己造个轮子吧。

 

firefly的特性

  • 高性能,性能大幅超越spring3、struts2等,详情请看性能测试报告
  • 精简、轻量、无侵入,firefly.jar只有44k
  • core包含IOC、MVC、Interceptor等常用功能
  • 使用简单,基于约定优于配置的思想,默认使用Annotation配置方式

 

firefly的使用风格类似Spring3,具体可以看

http://code.google.com/p/firefly/wiki/guide

 

代码已经发布到 google code ,有兴趣的同学可以一起来开发

http://code.google.com/p/firefly/

 

 

测试环境

  • windows7 jdk1.6.0_22
  • JDK参数:-Xms128m -Xmx512m -XX:+DisableExplicitGC
  • 服务器:jetty 6.1.25
  • CPU: T6600 内存:3G
  • 测试工具:JMeter

用例1测试报告

往JSP打印“你好 firefly!”

500线程,循环2次

取跑10次之后的成绩

框架 版本 吞吐量 错误率
fireflyMVC 1.0-SNAPSHOT 38910.506/分钟 0%
Servlet 2.5 38022.814/分钟 0%
Spring3MVC 3.0.5.RELEASE 13106.16/分钟 0%
Struts2 2.2.1.1 1256.571/分钟 0%

 

用例1

往JSP打印“你好 firefly!”

JSP代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
        <title>firefly</title>
</head>
<body>
        ${hello}
</body>
</html>

 

firefly测试代码

        @RequestMapping(value = "/hello")
        public String index(HttpServletRequest request) {
                request.setAttribute("hello", "你好 firefly!");
                return "/index.jsp";
        }

 

Servlet测试代码

        @Override
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                request.setAttribute("hello", "你好 firefly!");
                request.getRequestDispatcher("/WEB-INF/page/index.jsp").forward(
                                request, response);
        }

 

Spring3MVC测试代码

        @RequestMapping(value="/spring", method=RequestMethod.GET)
        public String index(HttpServletRequest request) {
                request.setAttribute("hello", "你好 firefly!");
                return "/index";
        }

 

Struts2测试代码

    public String execute() throws Exception {
        setMessage("你好 firefly!");
        return SUCCESS;
    }

 

分享到:
评论
17 楼 Ozone 2011-01-03  
鼓励一下! 当下来了!!!  现在喜欢看重造轮子的代码,学习学习!
16 楼 freish 2011-01-03  
弱弱的问一句,Firefly不是那个收费的、难用的、银行喜欢用的源码版本控制工具么?
15 楼 hypercube1024 2011-01-03  
<div class="quote_title">skzr.org 写道</div>
<div class="quote_div">
<div class="quote_title">这个测试的和我测试的不一样</div>
<div class="quote_title">tomcat7 maxThread=10,mvc例子:jsp页面打印 hello world!</div>
<p><span>MVC测试:<br>使用ab -n 10000 -c 20 测试一个helloworld control!<br>spring3 mvc访问jsp速度高达5、6K/s<br>struts2(关闭log,关闭开发模式即devMode=false) mvc最高还达不到2K/s</span></p>
<div class="quote_title">不知道为什么,出入不小阿?</div>
</div>
<p>我在我的笔记本测试的,配置比较差哈^_^,基本上目前firefly和Servlet性能是持平的,但是Spring3MVC和Servlet还是有一定差距</p>
14 楼 KimHo 2011-01-03  
有点兴趣
不过mvc框架,目前来说,不是必须的了,因为有了ajax……
13 楼 skzr.org 2011-01-03  
<div class="quote_title">这个测试的和我测试的不一样</div>
<div class="quote_title">tomcat7 maxThread=10,mvc例子:jsp页面打印 hello world!</div>
<p><span style="">MVC测试:<br>使用ab -n 10000 -c 20 测试一个helloworld control!<br>spring3 mvc访问jsp速度高达5、6K/s<br>struts2(关闭log,关闭开发模式即devMode=false) mvc最高还达不到2K/s</span></p>
<div class="quote_title">不知道为什么,出入不小阿?</div>
<div class="quote_title"><br></div>
<div class="quote_title">hypercube1024 写道</div>
<div class="quote_div">
<p><span style="font-family: arial, sans-serif; font-size: x-large; font-weight: bold;">用例1测试报告<a class="section_anchor" style="color: #bbbbbb; display: inline; text-decoration: none; margin-left: 0.7em; font-weight: lighter; font-size: 20px;" href="https://code.google.com/p/firefly/wiki/firefly_performance_test1#%E7%94%A8%E4%BE%8B1%E6%B5%8B%E8%AF%95%E6%8A%A5%E5%91%8A">¶</a></span></p>
<p style="font-family: arial, sans-serif; font-size: 13px;">往JSP打印“你好 firefly!”<br><br>500线程,循环2次<br><br>取跑10次之后的成绩</p>
<table style="border-collapse: separate; font-family: arial, sans-serif; font-size: 13px;" border="0"><tbody>
<tr>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;"><strong>框架</strong></td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;"><strong>版本</strong></td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;"><strong>吞吐量</strong></td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;"><strong>错误率</strong></td>
</tr>
<tr>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">fireflyMVC</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">1.0-SNAPSHOT</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">38910.506/分钟</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">0%</td>
</tr>
<tr>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">Servlet</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">2.5</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">38022.814/分钟</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">0%</td>
</tr>
<tr>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">Spring3MVC</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">3.0.5.RELEASE</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">13106.16/分钟</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">0%</td>
</tr>
<tr>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">Struts2</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">2.2.1.1</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">1256.571/分钟</td>
<td style="font-size: 13px; padding: 5px; border: 1px solid #aaaaaa;">0%</td>
</tr>
</tbody></table>
</div>
12 楼 wangking717 2011-01-03  
强烈支持作者,加油,持续关注!
11 楼 kjj 2011-01-03  
hypercube1024 写道
godson_2003 写道
有服务器端的验证么?


这个可以考虑增加^_^,还准备增加像Spring3那样的请求参数自动包装到javabean的功能,这个功能要大量的反射,对性能有多大的影响还不得而知,要尽量保持最高的性能

这个可以不用反射!!!!!!!!!
10 楼 hypercube1024 2011-01-03  
gwpking8419 写道
有什么优势 ?


1,轻量 firefly.jar 只有44k
2,高性能 可以参考性能测试报告
3,拥有常用的功能,IOC MVC Interceptor,后续考虑追加更对的功能

9 楼 gwpking8419 2011-01-03  
有什么优势 ?
8 楼 godson_2003 2011-01-03  
支持下 感觉有了服务器段验证 就可以用了
7 楼 hypercube1024 2011-01-03  
godson_2003 写道
有服务器端的验证么?


这个可以考虑增加^_^,还准备增加像Spring3那样的请求参数自动包装到javabean的功能,这个功能要大量的反射,对性能有多大的影响还不得而知,要尽量保持最高的性能
6 楼 godson_2003 2011-01-03  
有服务器端的验证么?
5 楼 苍山洱海 2011-01-03  
看起来灰常不错啊。
是得迁下来看看。
4 楼 hypercube1024 2011-01-03  
目前还准备新加入一些功能,追加一些有用的前端控件,json输出部分也准备自己开发高性能的json输出,摆脱对jackson的依赖,有兴趣的同学,希望也一起来参与开发吧,firefly的主旨就是追求最高的性能,保持精简。
3 楼 hypercube1024 2011-01-03  
<div class="quote_title">peterwei 写道</div>
<div class="quote_div">Your search did not generate any results. <br>You may want to remove some terms from your query.<br>好像不可以下载,没有打好的包吗?</div>
<p><br><br>现在已经把打好的firefly.jar放到 google code 上面去了,不过建议还是下载源码自己编译打包,那样maven可以自动拉取依赖包</p>
<p> </p>
<p>svn地址: http://firefly.googlecode.com/svn/trunk/firefly-core</p>
2 楼 peterwei 2011-01-03  
Your search did not generate any results.
You may want to remove some terms from your query.
好像不可以下载,没有打好的包吗?
1 楼 hypercube1024 2011-01-03  
<p><span>
</span></p>
<div style="background-color: #ffffff; margin: 8px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; font-size: 12px;">
<p style="margin: 0px;">firefly的使用的例子,帖子里面实在是贴不下了,直接上传pdf文档好了,jar包有打包好的在google code上面</p>
</div>
<p> </p>

相关推荐

Global site tag (gtag.js) - Google Analytics