Testando Estabilidade do DATASNAP vs outras ferramentas do mercado

Testando Estabilidade do DATASNAP vs outras ferramentas do mercado

http://datasnapperformance.wordpress.com/
http://datasnapperformance.wordpress.com

Comments

  1. I do not understand a word. but it looks like a fair comparison. :-)

    ReplyDelete
  2. Very useful link! Just learnt about Mormot :)

    ReplyDelete
  3. I guess A. Bouchez can comment on the drop of performance of mormot (and possibly also Sparkle) in XE7?

    ReplyDelete
  4. Stefan Glienke As I wrote in comment in the article, both Sparkle and mORMot do suffer in XE7. I guess there may be some performance regression introduced with XE7.
    But it is difficult to say what, since mORMot by-pass most of the RTL for its process, and since there is no thread trick during the process.
    The only idea I have (but no proof), is perhaps that class instance allocation is slower in XE7, not due to FastMM4 (which did not change AFAIK and is pretty efficient), but to some low-level RTL "new feature" which may have introduce a giant lock in the RTL. It may be tested easily with a program running 32 threads creating objects in loop.
    It is worth saying that this test is very basic: no one would use a REST server to return static "hello word" JSON. From our tests, when working with real data process, including ORM/DB tasks, we did not find any huge slowdown with XE7.

    ReplyDelete
  5. I took the liberty to execute the following loop:

    procedure TThreadTest.Execute;
    var i: integer;
        s: RawByteString;
    begin
      for i := 1 to OBJ_NUM do begin
        TSynCache.Create.Free;
        s := '12345';
        s[1] := AnsiChar(i mod 10+48);
        s[2] := AnsiChar(i mod 10+49);
      end;
    end;

    And there seems to be no regression when creating objects in XE7.

    Starting tests on Delphi 2007...
    Took 2.49s for creating 200000 objects in 8 threads for an average of 642,281 objects per second

    Starting tests on Delphi XE4...
    Took 2.58s for creating 200000 objects in 8 threads for an average of 619,116 objects per second

    Starting tests on Delphi XE7...
    Took 2.51s for creating 200000 objects in 8 threads for an average of 635,302 objects per second

    ReplyDelete
  6. Times diffs are insignificant indeed, thank you for get the tests

    ReplyDelete

Post a Comment