in reply to Perl slower than java
use Math::Complex;
It doesn't look like this module is used anywhere. Is it actually needed?
use Win32; ... "generation $generation_counter time: " . Win32::GetTickCount +. " \n" );
Perhaps you could use Time::HiRes and make your code more portable.
my $gene_length = gene_length(); ... if ( defined( $genome{$gene} ) ) { push( @phenotype, $genome{$gene} ); ... sub gene_length { my @gls = (); foreach my $key ( keys(%genome) ) { push( @gls, length($key) ); } @gls = sort(@gls); if ( $gls[0] != $gls[$#gls] ) { die("Invalid genotype"); } return ( $gls[0] ); }
You never modify the %genome hash and the keys are always the same size so you don't really need the gene_length subroutine.
If you wanted to you could just do:
my $gene_length = length +( keys %genome )[ 0 ];
Some of the places where you use arrays could be made more efficient by using strings instead.
|
---|