Javascript как один из диалектов ecmascript (как и actionscript) зачастую нуждается в оптимизации.
Если вы пользуетесь Firebug в mozilla, то дело очень облегчается использованием объекта console :
console.debug('This is just debugging text!');
console.info('This is some information.');
console.warn('This is a warning.');
console.error('This is an error!');
Косметическое решение - сжать код, устранив пробелы, однако это не решает проблем задержек из-за большой сложности алгоритма. Впрочем следует отметить что в каждом браузере разные парсеры, следовательно разная скорость и разная поддержка.
Например в IE операция str+='abc' два раза подряд занимает в два раза больше времени чем src+='abcabc'; Поэтому не удивляйтесь, если в IE ваши скрипты выполняются 10 секунд, а в Firefox 0,5 сек.
Но по-настоящему ускорение работы скриптов можно сделать лишь нахождением bottleneck - ситуаций. И на помощь приходит моя функция timestep. Использование достаточно простое - в участках кода ставим вызов этой функции с параметром названия этого участка. В конце исполняемого кода вызываем результат timedebug().var arrTime=new Array();
function timestep(description){
var endTime=new Date();
var recStep=new Array();
if (arrTime.length>0){
recStep['time']=(endTime-arrTime[arrTime.length-1]['rawtime']);
recStep['desc']=description;
recStep['rawtime']=endTime;
if (typeof console != "undefined") console.debug('Timestep '+recStep['desc']+' %s ms', recStep['time']); //for mozilla firebug
arrTime.push(recStep);//[arrTime.length+1]=recStep;
}
else{
recStep['time']=0;
recStep['desc']=description;
recStep['rawtime']=endTime;
arrTime.push(recStep);
}
}
timestep('start');
function timedebug(){
var strOut,totalTime;
for(var i=0;i++;i<arrTime.length){
strOut+="\n"+'Timestep '+arrTime[i]['desc']+' '+arrTime[i]['time']+' ms';
totalTime=totalTime+arrTime[i]['time'];
}
strOut+="\n"+'Total:'+totalTime+' ms';
alert(strOut);
}
Комментарии
function timedebug(){
ошибка. Цикл FOR не закрыт.