[REBOL] Re: Rebol API to DyBASE
From: tim:johnsons-web at: 17-Dec-2003 8:01
* Konstantin Knizhnik <[knizhnik--garret--ru]> [031217 07:26]:
> 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]
> instead of
> hash[key] = value
Grrr! I *hate* doing that, and in python I have to do
it a lot!
In rebol, I just do
hash/que 'val key
much nicer, it took me half a day to implement
my own object, but it was well worth it.
> in most other high-level languages.
> And as far as Rebol hash is also series, appending element to it cause
Hmm! Are you not using to-hash ?
> a lot of reallocations, so complexity of insert operation seems to be
> linear (instead of constant). And if we use "insert hash" instead of
> "append hash" (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).
I haven't run tests like that, but see my comment above.
> 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.
All language have their strengths and weaknesses, *and* their "best
Mysql is a best fit for rebol IMHO, rebol mysql access on our large,
multi-language projects beats perl and python hands down both
in access speed and in impelementation/coding. One of Rebol's strengths
is TCP/IP is native (compiled into the binray)
and the mysql-protocol exploits that splendidly.
On the other hand, perhaps the native 'hash' of rebol is not is
advanced as the btree approach that python uses.
I do believe that a true hash datatype is a linked list,
still, it is nice to see these tests and the work that you've
> C> regards
> C> Cyphre
> 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:
> >> http://www.garret.ru/~knizhnik/dybase.html
> >> 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
> C> PATH
> >> 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.
> 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.
Tim Johnson <[tim--johnsons-web--com]>