В cytoscape.js я пытаюсь изменить значения атрибутов двух узлов для каждого узла в сети с 329 узлами.cytoscape.js: улучшает производительность данных атрибута узла
Это работает, но занимает 86 секунд. Я надеялся, что это будет намного быстрее. Вот мой код:
var data = // data of the form {lfc: {key1: 0.01, key2: 0.02, ...}, pval: {key1: 0.03, key2: 0.04, ...}};
var nodes = cy.nodes();
console.log('starting to update node data...');
var start = new Date().getTime();
for (var i = 0; i < nodes.length; i++)
{
var node = nodes[i];
var id = node.data("id");
var lfc = data['lfc'][id];
var pval = data['pval'][id];
node.data({lfc: lfc, pval: pval});
}
var end = new Date().getTime();
console.log("finished in " + (end - start) + "ms");
Я знаю, что если я устанавливаю атрибуты всех узлов в сети к тому же значению, это намного быстрее. Это занимает около полутора секунд:
var start = new Date().getTime();
cy.nodes().data({lfc: 1.0, pval: 1.0});
var end = new Date().getTime();
console.log("finished in " + (end - start) + "ms");
Но поскольку я пытаюсь дать каждому узлу отдельные значения, я не могу этого сделать.
Любые идеи для улучшения производительности?
Похоже, решение состоит в том, чтобы удалить все узлы и ребра, затем обновить атрибуты узла, а затем повторно добавить узлы и ребра. Принимает 0,2 секунды. –