Yes, but even if being "very good" at regexes means regular expression matching in Perl was fast, it still doesn't make sense to avoid "hardcore mathematical computing" Perl isn't good at in lieu of regexes if you have to do arithmetic. It's hard to do any non-trivial arithmetic with regular expressions, and unlikely to be more efficient than regular "hardcore mathematical computing".
Even if your hammers are above average, and your screwdrivers aren't, it still doesn't make sense to hammer in screws. | [reply] |
Not avoid, but be aware, I think.
TIMTOWTDI is not always Perl's best feature, but if one way is a bit faster than the other, it might be a good idea to use it.
| [reply] |
It might be. But if there is more than one way of doing it, running speed is only one of the deciding factors, and often not the most important one. And its importantness rapidly decreases when the running speed difference is small.
But you weren't asking that. You didn't say "This is what I want, which if the following methods is faster" (in which case, you wouldn't have asked, you'd have written a benchmark, right?). Instead you asked an enormously general question, so general, it's almost meaningless.
But I can give you some answers. Read them, and you know how meaningless your question was.
- Avoid doing anything in Perl. Do it in C, bind it with XS to Perl.
- Avoid doing anything. Anything you do cost time, so anything you don't do saves time.
- Don't use regexes. They are slow in the best case, and very slow in the worst case.
- Avoid variables (and values) as much as possible. Each new variable (and often new values as well) causes memory allocation. More memory slows down the program.
- Hashes are slower than arrays.
- ....
Those are answers to your questions. And I'm not making them up, they're all true. But they aren't useful answers - you have a problem you want to solve, and you want to write quality, maintainable code. So, you are going to write it in Perl. And you will use variables. And if the problem calls for it, you will use hashes. And/or regexes.
| [reply] |