Author: markt
Date: Tue Nov 16 17:13:29 2010
New Revision: 1035699
URL: http://svn.apache.org/viewvc?rev=1035699&view=rev
Log:
Session manager performance
Narrow sync - few % improvement
Modified:
tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
tomcat/trunk/test/org/apache/catalina/session/Benchmarks.java
Modified: tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java?rev=1035699&r1=1035698&r2=1035699&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java Tue Nov 16
17:13:29 2010
@@ -980,7 +980,7 @@ public abstract class ManagerBase extend
/**
* Generate and return a new session identifier.
*/
- protected synchronized String generateSessionId() {
+ protected String generateSessionId() {
byte random[] = new byte[16];
String jvmRoute = getJvmRoute();
@@ -996,8 +996,10 @@ public abstract class ManagerBase extend
}
while (resultLenBytes < this.sessionIdLength) {
- getRandomBytes(random);
- random = getDigest().digest(random);
+ synchronized (this) {
+ getRandomBytes(random);
+ random = getDigest().digest(random);
+ }
for (int j = 0;
j < random.length && resultLenBytes < this.sessionIdLength;
j++) {
Modified: tomcat/trunk/test/org/apache/catalina/session/Benchmarks.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/session/Benchmarks.java?rev=1035699&r1=1035698&r2=1035699&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/session/Benchmarks.java (original)
+++ tomcat/trunk/test/org/apache/catalina/session/Benchmarks.java Tue Nov 16
17:13:29 2010
@@ -108,10 +108,10 @@ public class Benchmarks extends TestCase
/*
* Results on markt's 4-core dev box
- * 1 thread - 2,422ms
- * 2 threads - 5,047ms
- * 4 threads - 13,188ms
- * 16 threads - 54,422ms
+ * 1 thread - ~2,400ms
+ * 2 threads - ~4,700ms
+ * 4 threads - ~12,600ms
+ * 16 threads - ~53,700ms
*/
public void testManagerBaseCreateSession() {
doTestManagerBaseCreateSession(1, 100000);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]