Procházet zdrojové kódy

Merge branch 'wicket-optimizations' of https://github.com/martin-g/FrameworkBenchmarks into PR647

Conflicts:
	wicket/src/main/java/hellowicket/HelloJsonResponse.java
Mike Smith před 11 roky
rodič
revize
6b00c5a8fa

+ 5 - 2
wicket/src/main/java/hellowicket/HelloDbReference.java

@@ -1,11 +1,14 @@
 package hellowicket;
 
-import org.apache.wicket.request.resource.*;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceReference;
 
 public class HelloDbReference extends ResourceReference
 {
   private static final long serialVersionUID = 1L;
 
+  private final HelloDbResponse resource = new HelloDbResponse();
+
   public HelloDbReference()
   {
     super(HelloDbReference.class, "hello_json");
@@ -14,6 +17,6 @@ public class HelloDbReference extends ResourceReference
   @Override
   public IResource getResource()
   {
-    return new HelloDbResponse();
+    return resource;
   }
 }

+ 11 - 8
wicket/src/main/java/hellowicket/HelloDbResponse.java

@@ -1,13 +1,13 @@
 package hellowicket;
 
 import java.io.IOException;
-import java.util.*;
-import java.util.concurrent.*;
+import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.wicket.request.resource.AbstractResource;
-import com.fasterxml.jackson.databind.*;
+import org.hibernate.IdentifierLoadAccess;
 import org.hibernate.Session;
-import org.hibernate.Transaction;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class HelloDbResponse extends AbstractResource
 {
@@ -15,25 +15,28 @@ public class HelloDbResponse extends AbstractResource
 
   private static final int DB_ROWS = 10000;
 
+  private static final String CONTENT_TYPE = "application/json";
   private static final ObjectMapper mapper = new ObjectMapper();
 
   protected ResourceResponse newResourceResponse(Attributes attributes)
   {
     final int queries = attributes.getRequest().getQueryParameters().getParameterValue("queries").toInt(1);
     final World[] worlds = new World[queries];
-    final Random random = ThreadLocalRandom.current();
+    final ThreadLocalRandom random = ThreadLocalRandom.current();
 
     final ResourceResponse response = new ResourceResponse();
-    response.setContentType("application/json");
+    response.setContentType(CONTENT_TYPE);
 
-    response.setWriteCallback(new WriteCallback() {
+    response.setWriteCallback(new WriteCallback()
+    {
       public void writeData(Attributes attributes)
       {
         final Session session = HibernateUtil.getSessionFactory().openSession();
 
+        IdentifierLoadAccess loader = session.byId(World.class);
         for (int i = 0; i < queries; i++)
         {
-          worlds[i] = (World)session.byId(World.class).load(random.nextInt(DB_ROWS) + 1);
+          worlds[i] = (World) loader.load(random.nextInt(DB_ROWS) + 1);
         }
 
         session.close();

+ 5 - 2
wicket/src/main/java/hellowicket/HelloJsonReference.java

@@ -1,11 +1,14 @@
 package hellowicket;
 
-import org.apache.wicket.request.resource.*;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.ResourceReference;
 
 public class HelloJsonReference extends ResourceReference
 {
   private static final long serialVersionUID = 1L;
 
+  private final HelloJsonResponse resource = new HelloJsonResponse();
+
   public HelloJsonReference()
   {
     super(HelloJsonReference.class, "json");
@@ -14,6 +17,6 @@ public class HelloJsonReference extends ResourceReference
   @Override
   public IResource getResource()
   {
-    return new HelloJsonResponse();
+    return resource;
   }
 }

+ 18 - 13
wicket/src/main/java/hellowicket/HelloJsonResponse.java

@@ -1,31 +1,36 @@
 package hellowicket;
 
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.wicket.request.resource.AbstractResource;
-import com.fasterxml.jackson.databind.*;
+import org.apache.wicket.util.collections.MiniMap;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class HelloJsonResponse extends AbstractResource
 {
-	private static final long serialVersionUID = 1L;
-	
-	private static final ObjectMapper mapper = new ObjectMapper();
+  private static final long serialVersionUID = 1L;
+
+  private static final String CONTENT_TYPE = "application/json";
+  private static final ObjectMapper mapper = new ObjectMapper();
 
-	protected ResourceResponse newResourceResponse(Attributes attributes)
-	{
-    ResourceResponse response = new ResourceResponse();
-    response.setContentType("application/json");
-    response.setWriteCallback(new WriteCallback() {
+  protected ResourceResponse newResourceResponse(Attributes attributes)
+  {
+    final ResourceResponse response = new ResourceResponse();
+    response.setContentLength(27);
+    response.setContentType(CONTENT_TYPE);
+    response.setWriteCallback(new WriteCallback()
+    {
       public void writeData(Attributes attributes)
       {
-        Map<String, String> data = new HashMap<String, String>();
+        Map<String, String> data = new MiniMap<>(1);
         data.put("message", "Hello, World!");
 
         try
         {
-          attributes.getResponse().write(HelloJsonResponse.mapper.writeValueAsString(data));
+            String json = HelloJsonResponse.mapper.writeValueAsString(data);
+            attributes.getResponse().write(json);
         }
         catch (IOException ex)
         {
@@ -34,5 +39,5 @@ public class HelloJsonResponse extends AbstractResource
       }
     });
     return response;
-	}
+  }
 }

+ 4 - 3
wicket/src/main/java/hellowicket/World.java

@@ -1,8 +1,9 @@
 package hellowicket;
 
-import java.util.*;
-
-import javax.persistence.*;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
 
 @Entity
 public class World

+ 5 - 5
wicket/src/main/resources/log4j.properties

@@ -2,11 +2,11 @@ log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n
 
-log4j.rootLogger=WARN,Stdout
+log4j.rootLogger=ERROR,Stdout
 
-log4j.logger.org.apache.wicket=WARN
-log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=WARN
-log4j.logger.org.apache.wicket.version=WARN
-log4j.logger.org.apache.wicket.RequestCycle=WARN
+log4j.logger.org.apache.wicket=ERROR
+log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=ERROR
+log4j.logger.org.apache.wicket.version=ERROR
+log4j.logger.org.apache.wicket.RequestCycle=ERROR