From WikiChip
Optimization - mIRC
< mirc
Revision as of 22:45, 15 December 2015 by SReject (talk | contribs)


mIRC is not considered a fast language and, more often than not, the easiest implementation is not the fastest.

The following tips will help to increase the execution speed of a script. Most will have a very marginal speed advantage and may not be worth consideration outside of long-running script blocks such as loops.


Organization

Aliases at the top of script files have faster access speeds than if placed at the bottom of the script. Furthermore, aliases with in scripts at the top of the script-order have faster access speeds than those at the end.


Alias Bypassing

When calling any form of command or identifer mIRC will attempt to find a scripted version prior to looking for a native equivalent. This functionality can be bypassed by prefixing commands with ! and by inserting a ~ after the $ of identifers.


This bypasses mIRC looking for a scripted echo alias:

!echo -a example1
.!echo -a example2

This bypasses mIRC looking for a scripted me alias1:

echo -a $~me

1: Even though mIRC will use its own native identifers over custom aliases of the same name, there is still some pre-evaluation that can be bypassed using the above method.


Conditions

Best to worst:

if (condition) command
if condition { command }
if (condition) { command }


If vs $Iif()

$iif() is much slower than using an if-else statement. When $iif() is encounter it is first rearranged into an if-else statement and the result is evaluated.

Best to worst:

var %result = condition_false_value
if (condition) var %result = condition_true_value
if (condition) var %result = condition_true_value
else var %result = condition_false_value
var %result = $iif(condition, condition_true_value, condition_false_value)


/tokenize & $n vs $gettok()

For successive1 calls against the same data, it is faster to use /tokenize and $n over $gettok().

;; faster than using $gettok(a b c, 1, 32) $gettok(a b c, 2, 32)
tokenize 32 a b c
echo -a $1 $2

1: even with just two references against the same input tokenizing is faster than using $gettok


[]'s vs $() vs $eval

Best to worst:

[ eval_statement ]
$(eval_statement, 2)
$eval(eval_statement, 2)