[bitc-dev] Fwd: Retrospective Thoughts on BitC

Bennie Kloosteman bklooste at gmail.com
Sat Mar 24 19:51:13 PDT 2012

---------- Forwarded message ----------
From: Jonathan S. Shapiro
Date: Saturday, March 24, 2012
Subject: Retrospective Thoughts on BitC
To: Florian Weimer <fw at deneb.enyo.de>
Cc: "Jonathan S. Shapiro" <shap at eros-os.org>

On Friday, March 23, 2012, Florian Weimer <fw at deneb.enyo.de> wrote:
> * Jonathan S. Shapiro:
>>    - Run-time optimization has very negative consequences for startup

> >>    - especially in the context of transaction processing. Lots of hard
> data on
> >>    this from IBM (in DB/2) and others. It is one of the reasons that
> "Java in
> >>    the database" never took hold.
> >
> > Are you sure about this?  It seems to be more of a technical issue
> > because both the Oracle JVM and databases each bring their own
> > operating system substrate with them and are thus at odds.  Nowadays,
> > startup times are comparable to VMs which can execute inside a
> > database server process.
> Here's the key fact, as measured circa 1990:
> Typical DB/2 transaction duration: 150,000 instructions
> Native instructions required to reach first bytecode of main in IBM's JVM:
> 1,500,000 instructions
> Note the JVM hasn't done anything actually useful by that point. This
> datum is what prompted all of the work to pickle the initialized state.
> It's definitely possible to embed a safe language in a database
> effectively. Because of the profligate nature of the libraries, Java isn't
> going to be that language and neither is C#.
> shap

Not sure why you would start a new process (VM) for a transaction /query
....if you dont its merely a hash  look up to some pre compiled code.

Also in C#  you can already run C# programs in SQL server...and they are
compiled once so there stored procs will rarely hit bytecode or the VM
startup costs.

I do agree though you wont see C# for running the SQL queries for a long
time but that is the same reason  it doesnt work well for system code and
that is the  GC and more specifically the memory barrier .   C# can run
mutable compiled ( ngen assemblies) so the difference to C++ for code
execution can be fast but the memory costs are a killer .  ( Yes you can
use unsafe byref and stackalloc but it is a black art)

A pauseless GC can be built to do this , but this alone with a minimal
barrier is an impressive project .  Many of the people who use C++ now  (
and im not talking the systems people) eg  merchant banks  and 3D Games
would jump to C# or Java and pay big bucks  for an enterprise version.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.coyotos.org/pipermail/bitc-dev/attachments/20120324/546a1009/attachment-0001.html 

More information about the bitc-dev mailing list