use...if ( ($genome[$i] eq 'a') && ($genome[$i+1] eq 'a')) { ++$tt; } elsif ( ($genome[$i] eq 'a') && ($genome[$i+1] eq 'g')) { ++$ag; } elsif ( ($genome[$i] eq 'a') && ($genome[$i+1] eq 'c')) { ++$ac; } elsif ( ($genome[$i] eq 'a') && ($genome[$i+1] eq 't')) { ++$at; } elsif ( ($genome[$i] eq 't') && ($genome[$i+1] eq 'a')) { ++$ta; } ...
Finding the array elements is done only once, rather than once per comparison. The next improvement would be to concatenate the two elements and halve the number of comparisons try...my $genome = $genome[$i]; my $genome1 = $genome[$i+1]; if ( ($genome eq 'a') && ($genome1 eq 'a')) { ++$tt; } elsif ( ($genome eq 'a') && ($genome1 eq 'g')) { ++$ag; } elsif ( ($genome eq 'a') && ($genome1 eq 'c')) { ++$ac; } elsif ( ($genome eq 'a') && ($genome1 eq 't')) { ++$at; } elsif ( ($genome eq 't') && ($genome1 eq 'a')) { ++$ta; } ...
my $genomepair = $genome[$i] . $genome[$i+1]; if ( $genomepair eq 'aa' ) { ++$tt; } elsif ( $genomepair eq 'ag') { ++$ag; } elsif ( $genomepair eq 'ac') { ++$ac; } elsif ( $genomepair eq 'at') { ++$at; } elsif ( $genomepair eq 'ta') { ++$ta; } ...
In reply to A less extreme change..
by TravelByRoad
in thread how can I speed up this perl??
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |