[REBOL] Re: Rebol API to DyBASE
From: knizhnik:garret:ru at: 17-Dec-2003 18:55
Wednesday, December 17, 2003, 6:40:03 PM, you wrote:
C> I just had a quick look at
C> http://www.garret.ru/~knizhnik/dybase/doc/dybase.html#comparison . Is Rebol
C> really so slow or it is because the ported code isn't optimized to the
C> language yet?
Rebol has awful implementation of hash tables.
First of all, it is very inconvenient that there are normal set/get
operations. You have to use something like this:
h: find/tail hash key
either h [change h key value] [append append hash key value]
hash[key] = value
in most other high-level languages.
And as far as Rebol hash is also series, appending element to it cause
a lot of reallocations, so complexity of insert operation seems to be
linear (instead of constant). And if we use "insert hash" instead of
(not "insert tail hash"), then performance becomes
really awful - copying all series element increase complexity to
quadratic and insertion of 100000 integer elements in hash takes about
half an hour (less then second in all other languages).
And as far as object cache is one of the main components of object
oriented database, such inefficient implementation of hash table leads
to poor performance of Rebol DyBASE API.
C> ----- Original Message -----
C> From: "Konstantin Knizhnik" <[knizhnik--garret--ru]>
C> To: <[rebol-list--rebol--com]>
C> Sent: Wednesday, December 17, 2003 12:15 PM
C> Subject: [REBOL] Rebol API to DyBASE
>> Hello all,
>> First version of Rebol API to my object-oriented database DyBASE is
>> ready. It can be downloaded from my site:
>> DyBASE is embedded object oriented database for languages with dynamic
>> type checking. Rebol is fourth language for which DyBASE API is
>> provided. Data in database is stored in language independent format,
>> so (with some exceptions) data written by Python application can be
>> accessed by Rebol application (and visa versa).
>> Please read Rebol section in DyBYSE manual to get more information of
>> about specific of Rebol interface to DyBASE.
>> To use DyBASE at Windows in your Rebol application you need to include in
>> two libraries: DyBASE core dybasedll.dll (which is located in dybase\lib
>> directory) and Rebol wrapper - dybaseapi.dll (located in dybase\rebol
>> directory). At Unix you should first build these libraries. Use
>> makefile in dybase/src and dybase/rebol directories.
>> Then just load "dybase.r" module.
>> Please look also at examples:
>> dybase/rebol/guess.r - game: "guess an animal"
>> dybase/rebol/testindex.r - test of indices
>> dybase/rebol/testlink.r - detail-order-supplier database
>> All bug reports, change requests, suggestions are welcome.
>> Best regards,
>> Konstantin mailto:[knizhnik--garret--ru]
>> To unsubscribe from this list, just send an email to
>> [rebol-request--rebol--com] with unsubscribe as the subject.