В IntelliJ наверняка есть Gradle: https://www.jetbrains.com/help/idea/getting-started-with-gradle.html
Итак, вы можете либо используйте Gradle или Maven. Или вы также можете добавить jar в качестве зависимости к вашему проекту, но я не буду этого рекомендовать.
Я угробил бы "каждую" функцию в пользу для цикла, так как это быстрее. Я также добавил бы, что некоторые ожидают с помощью "setTimeout", но только время от времени и только если необходимый. Вы не хотите ожидать 5 мс каждый раз, потому что затем обработка 3 500 записей заняла бы приблизительно 17,5 секунд.
Ниже пример с помощью для цикла, который обрабатывает 100 записей (можно настроить это) в интервалах на 5 мс, который дает 175 мс наверху.
var xmlElements = $(xmlDoc).find('Object');
var length = xmlElements.length;
var index = 0;
var process = function() {
for (; index < length; index++) {
var toProcess = xmlElements[index];
// Perform xml processing
if (index + 1 < length && index % 100 == 0) {
setTimeout(process, 5);
}
}
};
process();
Я также сравнил бы различных частей обработки XML, чтобы видеть, существует ли узкое место где-нибудь, которое может быть зафиксировано. Можно сравнить в Firefox с помощью профилировщика поджигателя и путем выписывания к консоли как это:
// start benchmark
var t = new Date();
// some xml processing
console.log("Time to process: " + new Date() - t + "ms");
Надеюсь, это поможет.
Установите тайм-аут между обработкой, чтобы препятствовать тому, чтобы цикл цикла съел все ресурсы браузера. Всего только потребовалось бы несколько секунд, чтобы обработать и циклично выполниться через все, весьма разумное для 3 500 элементов.
var xmlElements = $(xmlDoc).find('Object');
var processing = function() {
var element = xmlElements.shift();
//process element;
if (xmlElements.length > 0) {
setTimeout(processing, 5);
}
}
processing();
Я считал бы преобразование этих 3 500 элементов от xml до серверной стороны JSON или еще лучшей загрузки этим к серверу преобразованный, так, чтобы это было собственным к JS с самого начала.
Это минимизировало бы Вашу загрузку, и пролил делают размер файла меньшим также.
JavaScript является однопоточным, таким образом, кроме setTimeout
, нет очень, можно сделать. Если использование Google Gears является опцией для Вашего сайта, они обеспечивают способность запустить JavaScript в истинном фоновом потоке.
Вы можете setTimeout () с продолжительностью НУЛЯ, и это уступит, как желаемый
Вы могли использовать рабочих HTML5 API, но это будет только работать над Firefox 3.1 и Safari 4 бета банкомата.