olala...
Le nwnscript est plus ou moins compilé. Le fichier qui sert se teremine par ncs.
Si tu as script test.nss le fichier compile s'apel test.ncs.
Dans le compilé on ne trouve que ce qui sert reelement a la machine c-a-d les lignes de codes et uniquement les lignes de codes. Tout ce qui est commentaire n'est absolument pas pris en compte par le compilateur.
Maintenant un bon code n'est pas un code compact sur une seule ligne. En C on peut faire ce genre de truc c'est pas forcement plus rapide et surtout c'est illisible, ca ne sert a rien...Je sais bien qu'a une epoque c'etait un peu le but du jeu en C (je crois meme me souvenirs qu'il y a avait des concours la dessus) mais cela ne sert a strictement rien en terme de langage machine ou autre...
Un code allege en nombre de ligne, ne sera pas celui qui tournera le plus vite. Un exemple tres con
for (i=0; i<5; i++)
{
traitement
}
En terme de rapidite d'execution (sauf si tu as un bon compilateur mais je pense pas que cela soit le cas de celui de NWN (les bons compilateurs C le transforme en ce qui suit)) c'est moins bon que
i=1;
traitement;
i++;
traitement;
i++;
traitement;
i++;
traitement;
Mais il faut mettre en balance la lisibilite du programme... en gros on perds en rapidite d'execution mais on gagne en ecriture et maintenabilite...
Donc allege c'est pas cela, en fait tu n'alleges pas le nombre de ligne de code mais le nombre d'acces...
Ex:
if (GetHitDic(oPC) > 5)
{
NewXP = OldXP - GetHitDice(oPC)*1000;
}
Cela par exemple sera a priori moins rapide que
int iHD = GetHitDice(oPC);
if (iHD > 5)
{
NewXP = OldXP - iHD*1000;
}
tu as une ligne de plus ici, mais a la place de te brancher 2 fois sur la meme fonction qui en plus te renvoie le meme resultat, ben la tu l'appel une seule fois, et un appel de fonction c'est relativement cher (svg des registres avant l'appel des fonctions, jmp a l'adress de la fonction, traitement, rejump a l'adress de depart et restauration des registres dans le meme etat qu'avant l'appel (en gros)). Donc la clairement tu as une ligne de plus mais normalement c'est plus rapide.
Mais attention il y a des contre-exemples...
Typiquement les strting conditionnal genere par le wizard
int startingcondityionnal()
{
if ( GetHitDice(GetPcSpeaker()) <= 5)
return FALSE
return TRUE;
}
ca non seulement c'est pourri mais en plus il reflechi a l'envers ce truc je trouve cela d'un chiant
Ca au dessous, ca fait la meme chose est c'est clairement plus rapide...
int startingcondityionnal()
{
return (GetHitDice(GetPcSpeaker()) > 5);
}