Well I must admit I can't remember when we got a bigger speed increase. Since we have very little simultanous uploads the memory tests resulted in favor of BigBuffer. I guess it's more like 60/40 in favor of xor.

I guess it wouldn't be that hard to change the way BigBuffer works so that it would resize (memcpy to new buffer) to needs (there's a throw statement that could be replaced by creating a new, resized Buffer). That would of course allocate more memory every time a bigger packet would be sent but it shouldn't be hard to get back to a smaller buffer.

I'll think about this some more. ;)

One more thing:

---- A quick'n'dirty testing script ----
#!/bin/bash

FORMAT='cpu R %e U %U S %S ; mem max %M avg %K ; io I %I O %O ; sock R %r S %s'
CLIENTPARAMS="--quiet --host=localhost --thread-count=8 --repeats=16 --packet-size=16384 --packet-count=4096 --thread-memlimit=0x20000000"
time=/usr/bin/time

echo Testing MichalCz
$time --format "Server ${FORMAT}" ~/nodejs/bin/node test/websocket-stresstest-server.js --port=2001 >> /dev/null &
sleep 5
$time --format "MichalCz-Client ${FORMAT}" ~/nodejs/bin/node test/websocket-stresstest-client.js ${CLIENTPARAMS} --port=2001
sleep 10
kill `ps -o pid,args -C node | grep websocket-stresstest-server | cut -c1-6`

sleep 1
---- EOF ---

-- 
Cheers,
Michał Czapracki

----- Oryginalna wiadomość -----
Od: "Brian McKelvey" <reply@reply.github.com>
Do: "Michał Czapracki" <michal.czapracki@agora.pl>
Wysłane: środa, 4 styczeń 2012 22:57:44
Temat: Re: [WebSocket-Node] New speed optimizations, very useful for transferring great (51e71b3)

Very interesting.  Is the main speed increase from using BigBuffer or from using the native C++ xor module?  I definitely like the native xor module and will be very happy to merge that in soon!

My main concern about BigBuffer is that the primary use case for WebSockets for most people is to transfer many very small frames rather than filling to the max allowed frame size, and BigBuffer seems to optimize for the high sustained throughput case at the expense of a vastly increased memory size requirement for users who transfer many small messages.

--- 
Reply to this email directly or view it on GitHub:
https://github.com/MichalCz/WebSocket-Node/commit/51e71b3bc954609ce7e92f557ed0ce0fc94e2111#commitcomment-838417
-- 
Niniejsza wiadomość pochodzi z domeny @agora.pl, należącej do Grupy
Kapitałowej Agory. Główne spółki wchodzące w skład Grupy Kapitałowej
Agory to:

Agora SA, ul. Czerska 8/10, 00-732 Warszawa; Numer identyfikacji
podatkowej: PL 526-030-56-44; Miejsce zarejestrowania: Sąd Rejonowy dla
m. st. Warszawy: Numer rejestru KRS: 59944; Kapitał zakładowy:
50.937.386 zł, wpłacony w całości.

Agora - Poligrafia Sp. z o.o., ul. Towarowa 4, 43-110 Tychy; Numer
identyfikacji podatkowej: PL 646-20-72-095; Miejsce zarejestrowania: Sąd
Rejonowy w Katowicach Numer rejestru KRS: 72481; Kapitał zakładowy:
1.000.000,00 zł.

Grupa Radiowa Agory Sp. z o.o., ul. Czerska 8/10, 00-732 Warszawa; Numer
identyfikacji podatkowej: PL 521-289-70-03; Miejsce zarejestrowania: Sąd
Rejonowy dla m. st. Warszawy Numer rejestru KRS: 126767; Kapitał
zakładowy:  25.019.500,00 zł.

Więcej informacji  o spółkach na stronie: www.agora.pl Wiadomość jest
przeznaczona wyłącznie dla zamierzonego adresata i może zawierać
informacje o charakterze poufnym. W razie stwierdzenia, że odbiorcą
miała być inna osoba prosimy poinformować nadawcę oraz niezwłocznie
usunąć wiadomość. Wiadomość może nie stanowić oficjalnego stanowiska
spółki Agora SA i nie być związana z jej działalnością.
------------
This message was sent from domain @agora.pl belonging to Agora Group.
Principal companies in the Agora Group structure are:

Agora SA, ul. Czerska 8/10, 00-732 Warszawa; Polish VAT and tax ID no.:
PL 526-030-56-44; Place of registration: Regional Court for the Capital
City of Warsaw; Registration no.: 59944; Share capital: PLN 50.937.386,
fully paid-up.

Agora - Poligrafia Sp. z o.o., ul. Towarowa 4, 43-110 Tychy; Polish VAT
and tax ID no.: PL 646-20-72-095; Place of registration: Regional Court
in Katowice; Registration no.: 72481; Share capital: PLN 1.000.000,00.

Grupa Radiowa Agory Sp. z o.o., ul. Czerska 8/10, 00-732 Warszawa;
Polish VAT and tax ID no.: PL 521-289-70-03; Place of registration:
Regional Court for the Capital City of Warsaw; Registration no.: 126767;
Share capital: PLN 25.019.500,00.

For more information about our companies see site: www.agora.pl This
message is for the intended recipient only and it may contain
confidential information. If you receive this message in error, please
immediately delete it and notify the sender. This message may not
represent the official views of Agora SA and may not be related to its
business.