#!/usr/bin/perl# https://www.endpointdev.com/blog/2011/05/benchmarking-perl-map/# In this case, replacing the imperative programming style here with# Functional programming (via map) yielded a small performance improvement,# but the script executed each method 1,000,000 times, so the performance# gain yielded by just one method call is very small.usestrict;usewarnings;useutf8;usefeatureqw/say/;useBenchmarkqw/:hireswallclock :all/;subtest_foreach{my($things)=@_;my@options;formy$obj(@$things){push@options,{value=>$obj->{a},label=>$obj->{b}};}return\@options;}subtest_map{my($things)=@_;return[map{{value=>$_->{a},label=>$_->{b}}}@$things];}subthings{my($number_of_items)=@_;my$base=int(rand(100));return[map{+{'a'=>$base+1,'b'=>$base+2,'c'=>$base+3}}(1..$number_of_items)];}subexperiment{my($count,$number_of_items)=@_;say"#listsize=${number_of_items}";clearallcache();my$r=timethese($count,{"foreach"=>sub{my$x=test_foreach(things($number_of_items))},"map"=>sub{my$x=test_map(things($number_of_items))},});cmpthese($r);}experiment(10_000,$_)for(3,100,1_000,10_000);
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199