anchor.diff:  	).
   
   proplist(Size) ->
  -	SetupFunc = fun() ->
  -		Proplist = [
  -			{list_to_binary(integer_to_list(Key)), <<"Value ", Key/integer>>}
  -			|| Key <- lists:seq(1, Size)
  -		],
  -		{Size, Proplist}
  -	end,
  +	SetupFunc = fun() -> proplist_create(Size) end,
   	run_benches(
   		io_lib:format("proplist (~p items)", [Size]),
   		[
  +			{create, fun() -> Size end, fun ?MODULE:proplist_create/1},
   			{get_value, SetupFunc, fun ?MODULE:proplist_get_value/1},
   			{lookup, SetupFunc, fun ?MODULE:proplist_lookup/1},
   			{iterate_list_comp, SetupFunc, fun ?MODULE:proplist_iterate_list_comp/1},
  
positive.code: 	).
  
  dict(Size) ->
  	SetupFunc = fun() ->
  		Dict = dict:new(),
  		{
  			Size,
  			lists:foldl(
  				fun(Key, LastDict) ->
  					dict:store(list_to_binary(integer_to_list(Key)), <<"Value ", Key/integer>>, LastDict)
  				end,
  				Dict,
  				lists:seq(1, Size)
  			)
  		}
  	end,
  	run_benches(
  		io_lib:format("dict (~p items)", [Size]),
  		[
  			{new, fun ?MODULE:null/0, fun ?MODULE:dict_new/1},
  			{fetch, SetupFunc, fun ?MODULE:dict_fetch/1},
  			{iterate_map, SetupFunc, fun ?MODULE:dict_iterate_map/1},
  			{iterate_fold, SetupFunc, fun ?MODULE:dict_iterate_fold/1},
  
negative.code: 	).
  
  ets(Size) ->
  	SetupFunc = fun() -> ets_new(Size) end,
  	run_benches(
  		io_lib:format("ets (~p items)", [Size]),
  		[
  			{new, fun() -> Size end, fun ?MODULE:ets_new/1},
  			{lookup, SetupFunc, fun ?MODULE:ets_lookup/1},
  			%{iterate_foldl, SetupFunc, fun ?MODULE:ets_iterate_foldl/1}, % HORRIBLE
  			%{iterate_match, SetupFunc, fun ?MODULE:ets_iterate_match/1}, % Not as bad, but still BAD
  