There are several things that could be improved upon if memory is an issue. In fact, if memory is an issue, split probably shouldn't play any part in your solution, since it returns a list, which consumes a lot more space than the original string. natatime will be reasonably memory efficient, but expanding that nice, compact string into a list will be memory-expensive.
As for time, or computational efficiency (which is what you were asking about), it's an O(n) solution. Where you will get into trouble is where "n" grows large enough to send you into swap memory. There may be O(n) solutions with smaller per-iteration costs, but you won't ever turn this into O(log n) or O(1); you'll always be at least O(n).
If I were designing it with memory in mind, I would probably use index and substr together to find every fifth comma, and to extract the portion of the string that resides between every fifth comma. I would iterate one small segment at a time so that I'm never making a copy of a large string. If that approach turned out not to be fast enough, I would re-implement the same simple algorithm using Inline::C.
Dave
In reply to Re^3: split with a delimiter, every 4 time it occurs.
by davido
in thread split with a delimiter, every 4 time it occurs.
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |