Oui, mais au niveau des performances.
Comparer les performances entre les deux "stacks" n’a quasiment aucun sens. Outre le fait que l’un soit un langage, l’autre un contexte d’exécution
C’est pénible parce que c’est un peu la mode de confondre temps de réponse, scalabilité etc.
Y’a une différence majeure dans le threading model de tous ces nouveaux outils taggés "reactor" / "nio" / "async". Et ça a des implications concrètes en termes de performance et de scalabilité.
C’est surtout vrai dans le monde Java (ou Python, je pense) où l’on peut comparer, sur un même environnement d’exécution (la JVM) les deux approches.
Sur la JVM, on constate par exemple que l’approche 1 thread / 1 req HTTP est parfois plus efficace lorsque le context switch est faible (scalabilité faible) étant donné qu’on bypass tout le scheduling, on gagne quelques pouillèmes de ms. Par contre lors de la montée en charge (donc plein de requêtes en même temps) l’approche "reactor" (single threaded ou multi-reactor, multi-core-threaded, pardon pour l’abus de langage) est nettement plus performante.
Du coup c’est difficile à comparer sans cas d’usage précis.
En plus de ça, il faut bien prendre en considération les avantages et inconvénients des deux solutions (single-threaded vs. 1 thread / HTTP req) dans l’approche de programmation (réactive, asynchrone). Certains trouveront la première (event-loop-based + callbacks et/ou promises et/ou coroutines) plus facile à "raisonner" (pas de race-condition), d’autres trouveront plus simple de se passer de callbacks pour exécuter du code bloquant.
A mon avis c’est un truc à vraiment vraiment prendre en considération quand on passe d’une approche à l’autre (ici PHP vers NodeJS) : il y a le langage, évidemment, le runtime, aussi, mais aussi et surtout le modèle de threading derrière, ça évite de se retrouver avec une event-loop-bloquée-qu’on-comprend-pas-pourquoi.
EDIT : c’est ma réponse aussi à la question de l’OP, parmi les trucs que je considère essentiel dans l’apprentissage de NodeJS, il y a son approche "event-loop" à bien, bien piger. Selon moi c’est un point de passage obligé.
EDIT2 : http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ peut aider.