Я создаю приложение, которое считает количество строк кода в хранилище Github. Пользователь вводит ссылку на репозиторий, после чего появляется таблица, состоящая из столбцов: «Имя файла», «Всего», «Код», «Комментарии», «Пусто».
Мой алгоритм работает, но когда начинается обработка большого файла, моя страница зависает. Подскажите, пожалуйста, как оптимизировать этот алгоритм?
fetch(....).then(result => {
if (itmes.type==='file'){
const content = Buffer.from(result.data.content, 'base64').toString();
CountCode(content);
}
//content is string
function CountCode(content) {
console.log('processing');
//Count total
let lines = content.split(/\r|\r\n|\n/);
let total_lines = lines.length;
//Count comments like /* */
let comment = content.replace(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/g,"");
let comment2 = comment.split(/\r|\r\n|\n/);
let comment_lines = total_lines - comment2.length;
console.log(comment_lines);
//Count comments like //
let comment3 = content.replace(/^[/][/].*/gm,"");
let comment4 = comment3.split(/\r|\r\n|\n/);
let comment_lines2 = total_lines - comment4.length;
console.log(comment_lines2);
//Count Total lines
let total_comment_lines=comment_lines+comment_lines2;
console.log(total_comment_lines);
//Count empty lines//
let empty = content.replace(/^\s*$/gm,"");
let empty2 = empty.split(/\r|\r\n|\n/);
let total_empty= total_lines - empty2.length;
console.log(total_empty);
//Count Total Code
let total_code = total_lines - total_empty - total_comment_lines;
console.log(total_code);
console.log('TOTAL: '+total_lines+' COMMENT: '+total_comment_lines+ ' EMPTY: '+ total_empty+ ' CODE: '+ total_code);
}