I haven't benchmarked...  I don't have much experience with
benchmarking.  Assistance would be greatly appreciated!

On Sep 23, 9:09 pm, Dragan Djuric <draga...@gmail.com> wrote:
> What is the performance penalty?
>
> On Sep 23, 5:21 am, Alyssa Kwan <alyssa.c.k...@gmail.com> wrote:
>
>
>
> > This is in reference 
> > tohttp://groups.google.com/group/clojure/browse_frm/thread/d6deac0c34d0....
>
> > Hi everyone!
>
> > I have hacked the Clojure core to add durability to refs.  The syntax
> > to create these is (dref <val> <key> <path>), where <key> and <path>
> > are strings.  Then you use them just like refs.  Creating a dref
> > creates a global identity, such that subsequent dref calls to the same
> > key and path will get the same dref.  On subsequent dref calls, the
> > <val> will be ignored and the persisted value used.  This includes in
> > subsequent VM instances.
>
> > Get it here:  git://github.com/kwanalyssa/clojure.git
>
> > 1. <path> refers to BDB JE databases which get created in the "data"
> > directory of your project.
> > 2. BDB JE is used.  I'm ignorant of IP and licensing issues.  Making
> > BDB JE core to Clojure is probably an issue.
> > 3. Currently only a subset of Clojure primitives types is supported.
> > No BigDecimal or Ratio yet.  See the comprehensive list (and
> > serialization mappings) at the bottom of src/jvm/clojure/lang/
> > DRef.java.  BDB JE TupleBindings are used.  Submissions welcome,
> > especially for the persistent data structures.
> > 4. How do we approach the problem of storing objects with lexical
> > environments?
> > 5. Unit tests welcome!  I didn't do TDD since the work is in Java and
> > there's no Java-level tests in the project.  Please add your own in
> > test/clojure/test_clojure/drefs.clj.  I'm new to concurrency, so tests
> > along those lines would be awesome!
> > 6. The ACID part is not really guaranteed!!!  STM is currently one-
> > phase-commit.  I inserted two-phase-commits to the data stores in the
> > middle of the one-phase-commit.  There's the remote possibility that
> > STM in-memory changes fail AFTER writing to disk.  It's REALLY remote,
> > but it is possible.  STM would have to be made 2PC to make this
> > airtight.  That's way beyond my current grasp of both concurrency and
> > Clojure implementation.
> > 7. I was aiming for an API where <path> is optional.  However, I
> > didn't want to stray from the ref API, which has variable arity.
> > Suggestions on how to reconcile the two are welcome!
> > 8. To maintain global identity, I use a static cache, which requires
> > non-hard references to avoid OOM issues.  This is my first time doing
> > this, so please check my code to make sure that I'm doing it right.
> > I'm using SoftReferences, though WeakReferences may be better for real-
> > life usage patterns.  Let me know!
>
> > Please dig in!  Feedback appreciated!
> > Alyssa Kwan

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to