From WikiChip
Editing mirc/while loops
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.
Latest revision | Your text | ||
Line 228: | Line 228: | ||
For these situations there are several techniques you can use to mitigate this: | For these situations there are several techniques you can use to mitigate this: | ||
− | a. Rather than iterating through a hash table item by item or a custom list window line by line to find what you want, use mIRC functionality to search for what you are seeking | + | a. Rather than iterating through a hash table item by item or a custom list window line by line to find what you want, use mIRC functionality to search for what you are seeking. This includes using the /command parameter for identifiers like $hfind $fline $regsubex etc, or using /filter's -k alias. If you use $findfile inside a while() loop handling the Nth file individually, mIRC is forced to repeat the disk search N times, while using the /command parameter inside $findfile allows performing the disk search just 1 time. Note that this comes at the cost of making mIRC completely unresponsive during the $findfile search, which might still be a longer duration than you find acceptable, even though the total time is greatly shortened. |
− | b. | + | b. Split the loops into smaller chunks and use .timer 0 1 to queue the next chunk of iterations, letting mIRC process any server messages, keystrokes and mouse clicks before running the timer. |
− | + | c. Make your while() loop more efficient by enabling it to use less overhead. If you are processing the lines in a disk file in a way which can't be accomplished using /filter -k, ensure your while (condition) itself uses fewer resources. | |
− | |||
− | |||
− | |||
− | c | ||
− | |||
− | |||
<pre> | <pre> | ||
Line 247: | Line 241: | ||
The 1st alternative will be slower due to repeatedly calculating the same thing.<br> | The 1st alternative will be slower due to repeatedly calculating the same thing.<br> | ||
− | + | Also, if your while loop is echoing screen output, you can speed up the loop by temporarily (or permanently) setting the /fupdate value to a higher number in the 0-100 range. If your loop is adding lines to a @window, the write is much faster if the window is hidden or minimized. |