Un caro ragazzo di nome Hammer, ha effettuato dei test sui vari metodi di scriptare.
Cosa vuol dire?
Vuol dire che...
Mo ve lo faccio vedere.

Immaginiamo di fare un piccolo addon per il nostro script.
L'addon e' quello che segue:

LinesTest1 {
  say $chr(160)
  set %i 0
  set %second.loop.start $ticks
  :label1
  inc %i
  if (%i != 100000) { set %i %i | set %i %i | goto label1 }
  set %second.loop.end $ticks
  say $chr(3) $+ 10Results hare: $calc(%second.loop.end -
%second.loop.start) ticks to complete
}

LinesTest2 {
  say $chr(160)
  set %i 0
  set %second.loop.start $ticks
  :label2
  inc %i
  if (%i != 100000) {
    set %i %i
    set %i %i
    goto label2
  }

  set %second.loop.end $ticks
  say $chr(3) $+ 10Results hare: $calc(%second.loop.end -
%second.loop.start) ticks to complete
}

Ho marcato in verde le differenze tra i due script.

I due listati eseguono le stesse procedure, ma sono scritti con una piccola differenza.
Nel primo listato vengono settate delle ipotetiche variabili %i in modo orizzontale, nel secondo listato vengono settate in modo verticale.

Come ben saprete, potete effettuare diverse operazioni in modo "lineare" utilizzando il segno | (pipe) ed e' quello che e' stato fatto.
Cosa comporta questa differenza di struttura?
Guardatevi sta tabella, così capirete quanto e' importante la struttura nello scripting.

 

Esecuzione n°
LinesTest1
LinesTest2
Differenza in %
01
60.593
62.363
2.84
02
60.509
62.570
3.29
03
60.675
62.830
3.43
04
60.819
62.858
3.24
05
60.906
62.472
2.51
06
60.833
62.295
2.35
07
60.674
62.652
3.16
08
60.935
62.625
2.70
09
60.785
62.377
2.55
10
61.096
62.872
2.82
       
Media:
60.782
62.591
2.89

 

Che significa tutto questo?
Significa che mettere una serie di comandi in linea e metterli in verticale non e' la stessa cosa.
Metterli in linea richiede meno ticks, ossia meno operazione.
Questo vuol dire che il nostro script sara' piu' veloce.

Facciamo un altro esperimento:

SlashTest1 {
  say $chr(160)
  set %i 0
  set %second.loop.start $ticks
  :label1
  inc %i
  if (%i != 100000) /goto label1
  set %second.loop.end $ticks
  say Results hare: $calc(%second.loop.end - %second.loop.start) ticks to complete
}

SlashTest2 {
  say $chr(160)
  set %i 0
  set %second.loop.start $ticks
  :label2
  inc %i
  if (%i != 100000) goto label2
  set %second.loop.end $ticks
  say Results hare: $calc(%second.loop.end - %second.loop.start) ticks to complete
}

In questo secondo test, abbiamo utilizzato una delle proprieta' del mIRC, overo la possibilita' di omettere il carattere / (slash) per fare eseguire un comando.
Vediamo subito la tabella con i risultati...

 

Esecuzione n°
SlashTest1
SlashTest2
Differenza in %
01
33.537
34.067
1.55
02
33.290
33.778
1.44
03
33.440
33.902
1.36
04
33.290
33.744
1.35
05
33.482
33.963
1.42
06
33.221
33.551
0.98
07
33.276
33.812
1.59
08
33.208
33.685
1.42
09
33.442
34.299
2.50
10
33.249
33.825
1.70
       
Media:
33.343
33.863
1.53

Come potete ben vedere, utilizzare o no il carattere / implica differenze abbastanza sostanziali nell'esecuzione di un comando.


Le mie conclusioni

Posso solo darvi un paio di consigli.
Per quanto riguarda il secondo test, abituatevi a scriptare senza abusare del carattere slash.
Usatelo solo se necessario e, se non siete sicuri se metterlo o no, provate lo script senza e, se non funge, schiaffategli sto cazzo di /.
Per quanto riguarda il primo test, non pretendete di scriptare in modo lineare fin dal principio.
Cerco di spiegarmi.
Utilizzare i pipe e', senza dubbio, il metodo migliore per ottenere uno script veloce, pero' richiede una concentrazione e una chiarezza di idee decisamente maggiore nei confronti della procedura verticale.
Immaginate di dover gestire una scansione di socks automatica...
Scriptare in modo lineare richiede una conoscenza decisamente alta per non incasinarvi.
Visto che, probabilmente, ancora non siete esperti, scriptate verticalmente e, dopo che avete testato lo script, levate gli "a capo" e sostituiteli con i pipes.
MA PRIMA TESTATE LO SCRIPT!!!