performance phantomjs casperjs zombie.js

performance - Rendimiento de phantom.js vs zombie.js



phantomjs casperjs (1)

No estoy seguro de por qué no estás utilizando la sintaxis de las promesas de zombie (como lo haces con Casper). Deberías estar haciendo algo como:

browser.fill(...) .then(browser.pressButton) .then(something else)

no utilizar la sintaxis de promesas puede causar todo tipo de efectos extraños, ya que el orden de ejecución en una api asíncrona es diferente del código descendente al que está acostumbrado en los lenguajes de script.

Para tu pregunta, no puedo estar completamente seguro, pero desde mi experiencia, zombie.js y capser.js (en la parte superior de phantom.js) son bastante similares en velocidad. También tenga en cuenta que los documentos zombie.js afirman que:

Para esperar a que la página cargue por completo y procese los eventos, pase a visitar una función de devolución de llamada.

Dado que pasa una devolución de llamada, obtiene lo que espera: esperar a que se cargue la página completa.

Estoy evaluando phantom.js y zombie.js . Esperaba que la compensación fuera que Phantom tiene un soporte de documentos más amplio (ya que usa un renderizador real), mientras que zombie es más rápido (ya que no se usa ningún motor de renderizado). Sin embargo, zombie parece mucho más lento en la prueba que hice. ¿Esto tiene sentido?

Estoy pensando que tal vez el zombi espere a que se cargue la página completa antes de que visite () devuelva (incluso ejecute todos los scripts y cargue css) mientras que el fantasma regresa inmediatamente después de comenzar () (usé casperjs) permitiéndome continuar sin esperar la página completa.

Phantom.js

casper.userAgent("Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13"); casper.test.begin(''bing search'', 2, function(test) { casper.start(''http://www.bing.com/'', function() { this.waitUntilVisible(''#sb_form_q'', function() { this.sendKeys(''#sb_form_q'', "book", true); this.click(''#sb_form_go''); this.waitUntilVisible(''#count'', function() { var val = this.evaluate(function() { return document.getElementById(''count'').innerText }); console.log(val) }); }); }).run(function() { test.done(); }); });

Zombie.js

var Browser = require("zombie"); var browser = new Browser() browser.userAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13" browser.visit("http://www.bing.com/", function() { browser.fill("#sb_form_q", "book"); browser.pressButton("#sb_form_go"); function resultArrived(window) { return window.document.querySelector("#count") } browser.wait(resultArrived, function() { console.log(browser.document.querySelector("#count").innerHTML) }); });