My first thing to check would be the fact that you have nested for-loops that may just be taking a very very very long time to run. If you have small files providing the data for @main and @annot, the for-loops will run quickly. If you have large files for both, then the runtime of the innermost loop will be the main determiner of the runtime of the script. Given that you then have 2 more nested for-loops in range_find(), your runtime is going to be on the order of O(n^4). This is usually considered to be poor.
The biggest suggestion I would have (after the obvious algorithmic improvement) is to pre-digest your data so that repetitive checks can be sped up or eliminated. The next thing would be to look at using a relational database (like MySQL or Oracle) and letting the power of relational calculus solve your problems.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|