ho provato per curiosità col codice riportato sotto.

Ho 10.000 checkbox e una stringa di 108.893 bytes.
faccio lo split della stringa
per ogni elemento del vettore impongo lo check all'elemento


IE8 e Chrome hanno tempi simili (2-3 secondi, non certo minuti)

Firefox e Opera danno il risultato quasi istantaneamente

La domanda è: il codice di prova mio, è molto lontano dall'originale?

codice:
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected k As Integer = 10000
    
    Protected ReadOnly Property stringa As String
        Get
            Dim sb As New StringBuilder()
            sb.Append(String.Format("prova_{0}", 1))
            For i As Integer = 2 To k
                sb.Append(String.Format("#prova_{0}", i.ToString))
            Next
            Return sb.ToString
        End Get
    End Property
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
// <!CDATA[
window.onload = function()
    {
        var sAux = "<%=stringa %>";
        var aAux = sAux.split('#'); 
        for(var i = 0; i < aAux.length; i++)
        {
            var c = document.getElementById(aAux[i]);
            if(c) c.checked = true;
        }
    
    };


// ]]>
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    <%For i = 1 To k%>
        <input id="prova_<%=i %>" type="checkbox" />
    <%next %>
    </div>
    </form>
</body>
</html>