1proc test_memory_efficiency {range} { 2 r flushall 3 set base_mem [s used_memory] 4 set written 0 5 for {set j 0} {$j < 10000} {incr j} { 6 set key key:$j 7 set val [string repeat A [expr {int(rand()*$range)}]] 8 r set $key $val 9 incr written [string length $key] 10 incr written [string length $val] 11 incr written 2 ;# A separator is the minimum to store key-value data. 12 } 13 set current_mem [s used_memory] 14 set used [expr {$current_mem-$base_mem}] 15 set efficiency [expr {double($written)/$used}] 16 return $efficiency 17} 18 19start_server {tags {"memefficiency"}} { 20 foreach {size_range expected_min_efficiency} { 21 32 0.15 22 64 0.25 23 128 0.35 24 1024 0.75 25 16384 0.82 26 } { 27 test "Memory efficiency with values in range $size_range" { 28 set efficiency [test_memory_efficiency $size_range] 29 assert {$efficiency >= $expected_min_efficiency} 30 } 31 } 32} 33