您的位置:首页 > 编程语言 > Go语言

go语言和java+jetty的web hello world 性能测试对比

2013-02-21 11:29 956 查看
公司现在的搜索服务RESTful架构一直是使用java + jetty; jetty的简单和高效一直很让人喜欢,搜索的RESTful架构两年来一直很稳定;但是软负载keepalived上想添加些业务的控制模块,可是keepalived没有专门的开发接口,自己新开发一套?对成本和性能、稳定性要求很高,考虑过scala 、lisp 、c 都觉得不合适,需要开发周期,性能都要考虑进去,go语言出来也两年多了,所以去关注了一下;下面是go对比jetty的性能测试。(注:go 语言的web没有服务容器这个概念,不需要apache
或nginx 等等,至少先阶段是这样)

测试的内容很简单,go 和java都是一个"hello world "的web输出

go代码

package main

import (
"fmt"
"log"
"net/http"
"strings"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
r.ParseForm() //参数解析
for k, v := range r.Form {
fmt.Println("key:", k)
fmt.Println("value:", strings.Join(v, ""))
}
fmt.Fprintf(w, "hello astaxie")
}

func main() {
http.HandleFunc("/", sayhelloName)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("listenAndServer", err)
}
}


java代码

package com.search5173.jetty.test;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

public class OneContext
{

public static void main(String[] args)
throws Exception
{
QueuedThreadPool threadPool= new QueuedThreadPool();
threadPool.setMaxThreads(11);
threadPool.setMinThreads(4);
Server server = new Server();
server.setThreadPool(threadPool);

Connector connector=new SelectChannelConnector();
connector.setPort(8081);
server.setConnectors(new Connector[]{connector});

ContextHandler context = new ContextHandler();
context.setContextPath("/t");
context.setResourceBase(".");
context.setClassLoader(Thread.currentThread().getContextClassLoader());
server.setHandler(context);

Handler handler=new HelloHandler();
context.setHandler(handler);

server.start();
server.join();
}

public static class HelloHandler extends AbstractHandler
{

@Override
public void handle(String arg0, Request request1, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {

response.getWriter().println("<h1>Hellodfgdfgdfgfd OneContext</h1>");

}
}
}


测试方式 apache ab, 这个简单方便

测试硬件

Pentium(R) Dula-Core CPU E5200 @2.50GHz

内存:3.25GB

操作系统:32位 (win7)

测试地址

1) go--->http://localhost:9090/rwer

2) java--->http://localhost:8081/t

测试脚本一

1) ab -n 50 -c 10 http://localhost:9090/rwer
2) ab -n 50 -c 10 http://localhost:8081/t
Requests per second: 结果:

jettygo
1311.442265.21
1083.402491.78
1423.851607.61
可以说在各方面go都完胜,知道go他强,但是没想到这么强,冲击很大。

再看些其他的

go:



jetty

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: