Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
9f080a01
Commit
9f080a01
authored
Nov 04, 2011
by
antirez
Browse files
first version of the speed regression test
parent
7b86f5e6
Changes
1
Hide whitespace changes
Inline
Side-by-side
utils/speed-regression.tcl
0 → 100755
View file @
9f080a01
#!/usr/bin/env tclsh8.5
# Copyright
(
C
)
2011 Salvatore Sanfilippo
# Released under the BSD license like Redis itself
proc run-tests branches
{
set runs
{}
set branch_id 0
foreach b $branches
{
cd ../src
puts
"Benchmarking
$b
"
exec -ignorestderr git checkout $b 2> /dev/null
exec -ignorestderr make clean 2> /dev/null
puts
" compiling..."
exec -ignorestderr make 2> /dev/null
if
{
$branch
_id == 0
}
{
puts
" copy redis-benchmark from unstable to /tmp..."
exec -ignorestderr cp ./redis-benchmark /tmp
incr branch_id
continue
}
# Start the Redis server
puts
" starting the server...
[
exec ./redis-server -v
]
"
set pids
[
exec echo
"port 12123
\n
loglevel warning
\n
"
| ./redis-server - > /dev/null 2> /dev/null &
]
after 1000
puts
" running the benchmark"
set output
[
exec /tmp/redis-benchmark -n 100000 --csv -p 12123
]
lappend runs $b $output
puts
" killing server..."
catch
{
exec kill -9
[
lindex $pids 0
]
exec kill -9
[
lindex $pids 1
]
}
incr branch_id
}
return $runs
}
proc get-result-with-name
{
output name
}
{
foreach line
[
split $output
"
\n
"
]
{
lassign
[
split $line
","
]
key value
set key
[
string tolower
[
string range $key 1 end-1
]]
set value
[
string range $value 1 end-1
]
if
{
$key
eq
[
string tolower $name
]}
{
return $value
}
}
return
"n/a"
}
proc combine-results
{
results
}
{
set tests
{
ping set get incr lpush lpop sadd spop
"lrange (first 100 elements)"
"lrange (first 600 elements)"
"mset (10 keys)"
}
foreach test $tests
{
puts $test
foreach
{
branch output
}
$results
{
puts
[
format
"%-20s %s"
\
$branch
[
get-result-with-name $output $test
]]
}
puts
{}
}
}
proc main
{}
{
# Note: the first branch is only used in order to get the redis-benchmark
# executable. Tests are performed starting from the second branch.
set branches
{
slowset 2.2.0 2.4.0 unstable slowset
}
set results
[
run-tests $branches
]
puts
[
combine-results $results
]
}
# Force the user to run the script from the 'utils' directory.
if
{
!
[
file exists speed-regression.tcl
]}
{
puts
"Please make sure to run speed-regression.tcl while inside /utils."
puts
"Example: cd utils; ./speed-regression.tcl"
exit 1
}
main
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment