Re: [Pharo-dev] NBFFI version of the OpenDBXDriver
On Thu, Sep 12, 2013 at 1:08 AM, Rocio Amaya <rochiamaya@gmail.com> wrote:
*
Hi!
I'd like to show a bit the outcome of the first iteration of the DBXTalk Gsoc of this year.
First, I've been adapting myself to the environment and technology (DBXTalk, OpenDBX, TalkFFI), and I've written some little tutorials of what I've learnt about them:
- Post of how to install OpenDBX
http://rochiamaya.wordpress.com/2013/07/28/how-to-install-version-1-4-6-of-o...
- Post of how to install and use TalkFFI to generate mappings
http://rochiamaya.wordpress.com/2013/07/30/create-bindings-with-talkffi/
- Post of how to use mappings generated by TalkFFI
http://rochiamaya.wordpress.com/2013/08/06/how-to-use-the-generated-bindings...
Also, as concrete code, we have built a NBFFI version of the OpenDBXDriver. The main idea of this is to provide a backward compatibility layer to people that use OpenDBX, while letting us move forward dropping the old FFI implementation.
*
That's all very cool. Thanks Rocio for keep us informed! Much appreciated. Regarding the usage of NBFFI, could you benchmark and see if there is a difference with using the traditional FFI? There used to be a package in DBXTalk with several benchmarks, I am sure you could reuse some.... I can give you more details if you want.
*
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'DeveloperGroup'.
However, the configuration still supports to load the former version of the driver (no NBFFI)
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'FFIDriver'.
And the configuration with only NBFFI version.
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'NBFFIDriver'.
To use, writte in the Workspace and DoIt:
âto set the NBFFI bindâ
LibOpenDBXMap initialize.
OpenDBX current: NBPharoOpenDBX new.
âor to set the oldFFI bindâ
OpenDBX current: FFIOpenDBX ffiImplementationForOS .
In our current/next steps, we are starting to dig into the other driver implementations. I'm currently working in a Mysql driver implementation that will use the C mysql library directly without the intermediation of OpenDBX. That way, the setup of the environment will be far easier and the entry barrier will be lowered.
*
To be honest, I don't see the advantages of this. You would avoid dealing with openDBX + mysql libs to be dealing with mysql lib only. But for that purpose there already is a MySQL Smalltalk driver implementation..... Cheers,
* Best Regards!* *Rocio.*
-- You received this message because you are subscribed to the Google Groups "DBXTalk" group. To unsubscribe from this group and stop receiving emails from it, send an email to dbxtalk+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
-- Mariano http://marianopeck.wordpress.com
2013/9/12 Mariano Martinez Peck <marianopeck@gmail.com>
On Thu, Sep 12, 2013 at 1:08 AM, Rocio Amaya <rochiamaya@gmail.com> wrote:
*
Hi!
I'd like to show a bit the outcome of the first iteration of the DBXTalk Gsoc of this year.
First, I've been adapting myself to the environment and technology (DBXTalk, OpenDBX, TalkFFI), and I've written some little tutorials of what I've learnt about them:
- Post of how to install OpenDBX
http://rochiamaya.wordpress.com/2013/07/28/how-to-install-version-1-4-6-of-o...
- Post of how to install and use TalkFFI to generate mappings
http://rochiamaya.wordpress.com/2013/07/30/create-bindings-with-talkffi/
- Post of how to use mappings generated by TalkFFI
http://rochiamaya.wordpress.com/2013/08/06/how-to-use-the-generated-bindings...
Also, as concrete code, we have built a NBFFI version of the OpenDBXDriver. The main idea of this is to provide a backward compatibility layer to people that use OpenDBX, while letting us move forward dropping the old FFI implementation.
*
That's all very cool. Thanks Rocio for keep us informed! Much appreciated.
Regarding the usage of NBFFI, could you benchmark and see if there is a difference with using the traditional FFI?
yes I am interested in that too on a concrete example such as OpenDBX. but for the general case: callout and marshalling speed comparison, you can have a look at: 1) presentation @ IWST'13 http://esug.org/data/ESUG2013/IWST/Slides/04-slidesNB-IWST13.pdf 2) and the paper for more details in the proceeding http://esug.org/data/ESUG2013/IWST/proceedings.pdf Luc
There used to be a package in DBXTalk with several benchmarks, I am sure you could reuse some.... I can give you more details if you want.
*
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'DeveloperGroup'.
However, the configuration still supports to load the former version of the driver (no NBFFI)
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'FFIDriver'.
And the configuration with only NBFFI version.
Gofer it
smalltalkhubUser: 'DBXTalk' project: 'Configurations';
configurationOf: 'OpenDBXDriver';
load.
(((Smalltalk at: #ConfigurationOfOpenDBXDriver)
perform: #project)
perform: #version: with: â1.3â)
load: 'NBFFIDriver'.
To use, writte in the Workspace and DoIt:
âto set the NBFFI bindâ
LibOpenDBXMap initialize.
OpenDBX current: NBPharoOpenDBX new.
âor to set the oldFFI bindâ
OpenDBX current: FFIOpenDBX ffiImplementationForOS .
In our current/next steps, we are starting to dig into the other driver implementations. I'm currently working in a Mysql driver implementation that will use the C mysql library directly without the intermediation of OpenDBX. That way, the setup of the environment will be far easier and the entry barrier will be lowered.
*
To be honest, I don't see the advantages of this. You would avoid dealing with openDBX + mysql libs to be dealing with mysql lib only. But for that purpose there already is a MySQL Smalltalk driver implementation.....
Cheers,
* Best Regards!* *Rocio.*
-- You received this message because you are subscribed to the Google Groups "DBXTalk" group. To unsubscribe from this group and stop receiving emails from it, send an email to dbxtalk+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
-- Mariano http://marianopeck.wordpress.com
participants (2)
-
Luc Fabresse -
Mariano Martinez Peck