У меня есть следующий код:Для цикла слишком медленно
var Combinatorics = require('js-combinatorics');
var fs = require('fs');
cp = Combinatorics.cartesianProduct(
["4", "@", "/\\", "/-\\", "^", "∂", "λ", "α", "(!", "Z", "α"], ["1²", "2", "?", "P\\", "[\"/_", "l\"/_", "|-", "|2", "|?", "®", "12", "/2", "I2", "|^", "|~", "(r)", "|`", "l2", "Я", "ʁ", "я"], ["#", "(-)", ")-(", "/-/", "4", "<~>", "[-]", "\\-\\", "]-[", "]~[", "{-}", "{=}", "|-|", "|~|", "}{", ":-:", "}-{", "н"], ["!", "'", "1", "[]", "][", "|", "¦", "¡", ":", "]", "ι"], ["&", "3", "€", "£", "ë", "[-", "|=-", "ə", "ε"]
);
for(var index = 0; index < cp.length; ++index) {
//may be not the best idea, but in this way I will add new line to each word when saving them into array
var aux = cp.toArray()[index] + '\n';
console.log(cp.toArray()[index])
var contents = fs.appendFile("./output.txt", aux,
function(error) {
if(error) {
console.log("error writing");
}
});
}
Он будет генерировать 411642 слов и сохранить их от новой линии «\n
» в output.txt
Этот код работает быстро, если Я генерирую не такое большое количество слов, но в моем случае есть 411642 слова, которые должны быть сгенерированы, и я написал их из новой строки, используя «\n
» в файле output.txt. Моя скорость с использованием этого кода приблизительно равна 82 словам/1 минута. Это очень медленно. Я не понимаю, почему? Как я могу сделать это быстро?
Добро пожаловать в мир комбинаторики. Вы создаете экспоненциально растущий набор результатов. Javascript - это не самый быстрый язык для этого. –
@EricJ. Так что я могу использовать здесь самый простой и быстрый способ получить мой список слов)? – cebit933
Если вы используете цикл с console.log, удалите его, это сделает его намного быстрее. –