Я столкнулся с проблемой производительности со странным поведением javascript внутри моего Firefox (13.0.1). Новый Chrome показывает одинаковое поведение.
Когда я выполняю код javascript, который выглядит как ниже, результат довольно медленный. Тем не менее, я получаю примерно 10 ускорений, если я просто встраиваю содержимое внешний цикл над "j". Для моего примера приложения это означает, что я просто записывая его два раза при фиксированных значениях "j = 0" и "j = 1" соответственно, так как "m" равно 2. Конечно, я не хочу "m", быть жестко закодированным, поэтому я спрашиваю себя, что именно вызывает это замедление, когда используя реальный цикл?
Есть ли у кого-нибудь идеи?
Я запускаю код внутри веб-рабочего. Как ни странно, положительный эффект вложения не возникает, если я выполняю его в основном контексте javascript вместо рабочего контекста. Тем не менее, выполнение содержимого цикла только для одного значения "j" приводит к огромному ускорению во всех случаях. Может ли это также иметь отношение к управлению памятью?
Большое спасибо!
//m: very small, 1-2
for (j = 0; j < m; ++j) {
var attrib = attributes[j];
//n: very large, ~3*10^6 elements
for (i = 0; i < n; ++i) {
var data = largeBuffer[i];
//nc: very small, 2-3
for (c = 0; c < nc; ++c) {
var component;
//compute 'component
//..
attrib.typedArray[baseIdx + c] |= component;
}
baseIdx += nc;
}
}