Uso questo metodo per aggiungere un evento ad un elemento

codice:
//----------------------------------------------------------------------
//Aggiunge un evento ad un elemento
// elm		  = elemento, esempio document.getElementById("id_elemento")
// 				oppure "id_elemento"
// evType	  = "click", "change", ...
// fn		  = puntatore a funzione o function(e){}
// useCapture = true or false
//----------------------------------------------------------------------
function addEvent(elm, evType, fn, useCapture) 
{
	if(typeof(elm) == 'string') elm = document.getElementById(elm);
	
	if (elm.addEventListener) 
	{
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) 
	{
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else 
	{
		elm['on' + evType] = fn;
	}
}
adesso voglio aggiungere l'evento change ad ogni elemento di un form, e uso:
codice:
window.onload = function()
{
    var els = document.getElementById("form1").elements;
    for(var i = 0; i < els.length; i++)
    {
        var el = els[i];
		//*** FUNZIONE ****
    }
}

adesso ho questa scelta:

addEvent(el, "change", function(e){ if(!e) var e = window.event; var tg = (e.target) ? e.target : e.srcElement; alert(tg.id); }, false);


addEvent(el, "change", (function(s){return function(){alert(s.id);};})(el), false);


premesso che funzionano entrambe, mi piacerebbe sapere quale è quella meno pesante.