String.prototype.repeat = function (num) {
return new Array(num + 1 ).join(this );
}
function set_to_length(length, frag_size)
{
var fragment = "'" + "x" .repeat(frag_size) + "' + " ;
var frags = Math.floor((length - 1 )/frag_size);
var code = "var x = " + fragment.repeat(frags) + "'" +
"x" .repeat(length - frags * frag_size) + "';" ;
try {
eval(code);
}
catch (err) {
if (err.message && err.message == "Out of memory" )
return -1 ;
if (err == "out of memory" )
return -1 ;
throw (err); /* Oops, broke something. */
}
return code.length;
}
var first_fail;
var first_pass;
var frag_size;
var pass_code_length;
function search_up()
{
if (set_to_length(first_fail, frag_size) < 0 ) {
setTimeout(binary_search, 0 );
return ;
}
first_fail *= 2 ;
}
function binary_search()
{
if (first_fail - first_pass > 1 ) {
var length = (first_pass + first_fail) / 2 ;
var code_len = set_to_length(length, frag_size);
if (code_len > 0 ) {
first_pass = length;
pass_code_length = code_len;
} else
first_fail = length;
setTimeout(binary_search, 0 );
return ;
}
}
function run_find_limit()
{
frag_size = 64 ;
first_fail = 65536 ; /* A guess */
first_pass = 0 ;
pass_code_length = 0 ;
for (var i=0 ; i<5 ; i++)
search_up(0 );
}
run_find_limit();
Messung V0.5 in Prozent C=96 H=91 G=93
¤ Dauer der Verarbeitung: 0.1 Sekunden
¤
*© Formatika GbR, Deutschland