Как оптимизировать алгоритм подсчета строк кода? - PullRequest
0 голосов
/ 28 мая 2019

Я создаю приложение, которое считает количество строк кода в хранилище 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...