Alexander Langer schrieb:
> Was passiert da genau, wird da ein neuer V8-Prozess geforkt oder doch
> nur intern ein Thread aufgemacht ?
Fᅵr die Interna solltest Du auf der node-mailinglist fragen, die kᅵnnen
das da wahrscheinlich besser antworten. Soweit ich das verstehe, nutzen
Childprozesse auf Multicore-Systeme die anderen CPU-Kerne besser aus.
Der Parrent-Process lᅵuft auf einem Core, der Child auf einem anderen.
> Wo sind da die Vorteile gegenᅵber z.B. Jython, das Java Threads benutzen
> kann ? Vermutlich schneidet node.js da sogar viel schlechter ab ?
Node ist keine eierlegenede Woll-Milch-Sau, aber ist Aufgrund der
non-blocking Natur fᅵr bestimmte Sachen sehr gut geeignet.
Bei allem, wo der CPU nicht der Flaschenhals ist also z.B. Netzwerk
(Webserver, Chat, Online-Gaming-Server) hat Node die Nase vorn, da es
nicht Dᅵumchen dreht, wenn auf Daten ᅵbers Netzwerk gewartet wird und
mit weniger Resourcen auskommt. Um Videos oder groᅵe Mengen Bilder
umzurechnen ist der Eventloop eher nicht geeignet, aber um deren Uploads
entgegenzunehmen und dann z.B. an die passenden C-Programme weiter zu
streamen schon.
In Node programmieren heiᅵt:
Nicht blockend programmieren und schnell die Kontrolle an den Eventloop
zurᅵckgeben.
Wenn Du Sachen hast die CPU intensiv sind und lᅵnger dauern, musst Du
die entweder so programmieren, das Du bei jeden Durchgang nur einen
kleinen Teil abarbeitest oder halt Childprozesse startest. Das
ᅵbertragen des Ergebnisses eines Childprozess in den Parrentprozess,
sollte im Vergleich zur Arbeit, die der Child erledigt, eher gering sein
sonst lohnt es sich ja gar nicht den Child auf zu machen.
Es kommt also auf das Problem an was gelᅵst werden soll, bei manchen
Sachen bringt Node einen Geschwindigkeitsvorteil bei anderen nicht.
Wenn Dein Problem ein Nagel ist nimmst Du einen Hammer, wenn Dein
Problem eine Schraube ist nimmst Du einen Schraubenzieher usw.
--
bye, kai