-
-
Save alphazero/522177 to your computer and use it in GitHub Desktop.
/* | |
* Copyright 2010 Joubin Houshyar | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.jredis.ri.alphazero.bench; | |
import java.io.Serializable; | |
import org.jredis.JRedis; | |
import org.jredis.RedisException; | |
import org.jredis.bench.Util.Timer; | |
import org.jredis.connector.ConnectionSpec; | |
import org.jredis.ri.alphazero.JRedisClient; | |
import org.jredis.ri.alphazero.connection.DefaultConnectionSpec; | |
/** | |
* [TODO: document me!] | |
* | |
* @author joubin ([email protected]) | |
* @date Aug 12, 2010 | |
* | |
*/ | |
public class JRedisClientContinuousOpBenchmark { | |
public static void main (String[] args) { | |
new JRedisClientContinuousOpBenchmark().run(); | |
} | |
public void run() { | |
int reps = 1000; | |
ConnectionSpec spec = DefaultConnectionSpec.newSpec() | |
.setCredentials("jredis".getBytes()) | |
.setDatabase(13); // << we will flush this db | |
JRedis jredis = new JRedisClient(spec); | |
try { | |
jredis.flushdb(); | |
for(;;) benchOp(jredis, reps); | |
} | |
catch (RedisException e) { | |
e.printStackTrace(); | |
} | |
} | |
private void benchOp(JRedis jredis, int reps){ | |
Timer timer = Timer.startNewTimer(); | |
String key = "baby!"; | |
try { | |
for(int i=0; i<reps; i++) { | |
Woof woof = new Woof(); | |
jredis.set(key+woof.timestamp, woof); | |
} | |
} | |
catch (RedisException e) { | |
e.printStackTrace(); | |
} | |
finally { | |
timer.mark(); | |
System.out.format("delta: %d - keys: %09d \n", timer.deltaAtMark(), keyCnt(jredis)); | |
} | |
} | |
private long keyCnt (JRedis jRedis) { | |
try { | |
return jRedis.dbsize(); | |
} | |
catch (RedisException e) { | |
throw new RuntimeException("", e); | |
} | |
} | |
@SuppressWarnings("serial") | |
public static class Woof implements Serializable { | |
public final long timestamp = System.currentTimeMillis(); | |
} | |
} |
Btw, the above output is with append log on. With default settings, the performance is considerably better (and o/c still O(1)):
elta: 117 - keys: 000002447
delta: 118 - keys: 000002566
delta: 119 - keys: 000002686
delta: 119 - keys: 000002805
delta: 112 - keys: 000002917
delta: 127 - keys: 000003041
delta: 117 - keys: 000003158
delta: 115 - keys: 000003273
delta: 116 - keys: 000003389
delta: 115 - keys: 000003503
delta: 113 - keys: 000003617
delta: 113 - keys: 000003730
delta: 113 - keys: 000003844
delta: 131 - keys: 000003974
...
delta: 115 - keys: 000024042
delta: 115 - keys: 000024157
delta: 115 - keys: 000024270
delta: 113 - keys: 000024384
delta: 116 - keys: 000024501
delta: 116 - keys: 000024617
delta: 117 - keys: 000024733
...
delta: 117 - keys: 000042733
delta: 115 - keys: 000042847
delta: 117 - keys: 000042964
delta: 119 - keys: 000043081
delta: 115 - keys: 000043197
delta: 118 - keys: 000043315
delta: 114 - keys: 000043429
delta: 120 - keys: 000043547
delta: 118 - keys: 000043666
delta: 118 - keys: 000043784
...
elta: 119 - keys: 000091534
delta: 115 - keys: 000091649
delta: 115 - keys: 000091765
delta: 116 - keys: 000091880
delta: 115 - keys: 000091996
delta: 117 - keys: 000092111
delta: 117 - keys: 000092228
delta: 114 - keys: 000092343
delta: 117 - keys: 000092459
delta: 115 - keys: 000092574
...
delta: 116 - keys: 000112310
delta: 113 - keys: 000112424
delta: 114 - keys: 000112538
delta: 115 - keys: 000112653
delta: 114 - keys: 000112767
delta: 116 - keys: 000112884
...
delta: 119 - keys: 000132149
delta: 119 - keys: 000132268
delta: 114 - keys: 000132382
delta: 116 - keys: 000132499
delta: 115 - keys: 000132615
MBP OSX 10.5 Java 6 localhost
output of the bench -- deltas consistently in 600-700 range.
delta: 740 - keys: 000000685
delta: 720 - keys: 000001353
delta: 660 - keys: 000002010
delta: 659 - keys: 000002668
delta: 658 - keys: 000003323
delta: 689 - keys: 000003990
delta: 656 - keys: 000004643
delta: 640 - keys: 000005282
delta: 645 - keys: 000005925
delta: 674 - keys: 000006576
...
delta: 653 - keys: 000087620
delta: 661 - keys: 000088278
delta: 658 - keys: 000088933
delta: 680 - keys: 000089591
delta: 647 - keys: 000090236
...
delta: 660 - keys: 000934533
delta: 660 - keys: 000935190
delta: 662 - keys: 000935852
delta: 740 - keys: 000000685
delta: 720 - keys: 000001353
delta: 660 - keys: 000002010
delta: 659 - keys: 000002668
delta: 658 - keys: 000003323
delta: 689 - keys: 000003990
delta: 656 - keys: 000004643
delta: 640 - keys: 000005282
delta: 645 - keys: 000005925
delta: 674 - keys: 000006576
...
delta: 658 - keys: 000988125
delta: 651 - keys: 000988775
delta: 649 - keys: 000989424
...
delta: 658 - keys: 001035518
delta: 728 - keys: 001036164
delta: 649 - keys: 001036810
...
delta: 682 - keys: 001054456
delta: 652 - keys: 001055106
delta: 649 - keys: 001055754
delta: 835 - keys: 001056454
...
delta: 648 - keys: 001072558
delta: 655 - keys: 001073212
delta: 733 - keys: 001073863
delta: 662 - keys: 001074520
...