sub foo { join ' ', ( $_[0] < .5 ? 'a' : 'b' ), ( $_[1] < .5 ? 'c' : 'd' ), ( $_[2] < .5 ? 'e' : 'f' ), } #### use Runops::Trace 'checksum_code_path'; for ( 1 .. 1000 ) { my @args = ( rand(), rand(), rand() ); $md5 = checksum_code_path( sub { $results = foo( @args ) } ); next if $seen{ $md5 } ++; push @great, \ @args; } __END__ 0.16 0.53 0.84 -> b c e 0.03 0.29 0.43 -> b d f 0.30 0.45 0.74 -> b d e 0.58 0.25 0.91 -> a d e 0.60 0.02 0.11 -> a d f 0.47 0.52 0.33 -> b c f 0.51 0.53 0.63 -> a c e 0.59 0.53 0.05 -> a c f #### MD5 checksum for codepath : count 3486706209c7e59208c012e9fb50a4a8: 65 44a40eaf7295843c7b98c513acbd30cd: 39 49f80e6c0a251c6097828935336b8369: 5 117dd819263a4a0b05ee740190369556: 71 bacb29e1bf8fd4f00d89a1aa1759b18b: 392 ee75b4954053f18a33f00589f2dff817: 28 8a17266d3f92737fe3154c2ee3acd0b0: 7 775a10dbb2d9ce52259680e901999d66: 393 #### sub codelength { my $count = 0; Runops::Trace::trace_function( sub { ++ $count }, $_[0], ); return $count; }