#1 2014-12-23 11:38:54

itSDS
Member
From: Germany
Registered: 2014-04-24
Posts: 516

64Bit Thoughts

At first: I like to use 64Bit Services cause my Windows Servers are also 64Bit.

for this reason i made some Tests:

  • I wanted to include 64Bit sqlite.obj in my Service. Here i get the Problem that my bcc64 raises an Exception and terminates (just call bcc64 at cmd) very serious !
    May be anyone has a tip for me ?!

  • Normally i use UniDac with MySQL - Direct.
    Everything is fine under 32/64Bit - except Performance as AB stated.
    So i tried ZEOS and found out that ZEOS uses libMySQL.dll.
    Here i made a workaround cause i like to try 32/64Bit service in the same Folder.
    I renamed the 64Bit MySQL to libMySQL64.dll and added some code to ZEOS if i compile under 64Bit.
    Is there a better way ?


Rad Studio 12.1 Santorini

Offline

#2 2014-12-23 13:03:41

itSDS
Member
From: Germany
Registered: 2014-04-24
Posts: 516

Re: 64Bit Thoughts

I made some Performance Test with my Server. The Times for ZEOS and UniDAC in my case are the Same. I went back to UniDAC.


Rad Studio 12.1 Santorini

Offline

#3 2014-12-27 11:36:45

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,662
Website

Re: 64Bit Thoughts

At first, a 64 bit executable would not necessary be faster than a 32 bit one, even if the OS is 64 bit.
On the contrary: since the Delphi compiler is less optimized for 64 bit code generation (e.g. the asm generated for "case ... of ... end" is less optimized), and since pointers have a doubled size, Delphi 64 bit executable use more memory and are slower than 32 bit executables.

There is no 64 bit .obj yet - but we supply an recent compiled sqlite3.dll on our site.

UniDAC is slower than Zeos when reading data, from our tests.
See http://synopse.info/files/html/Synopse% … #TITLE_112
And IMHO the benefit of "direct" access is very low on server side: you should better use the official MySQL/MariaDB client dll.
Then, in a typical mORMot application, you serve the content as REST, so you do not need to deploy any DB client library for end-user apps, since all content will take place via raw HTTP. Or you could use our SynDBRemote.pas unit if you do not ORM, but raw SQL execution. See http://synopse.info/files/html/Synopse% … l#TITL_131 This is IMHO a much better approach than "direct MySQL": the client app does not know anything about database connection, just plain HTTP. And the protocol is more optimized than MySQL when used over a slow network (like Internet).

Offline

Board footer

Powered by FluxBB