Ayende @ Rahien

Ayende @ Rahien

Oren Eini aka Ayende Rahien CEO of Hibernating Rhinos LTD, which develops RavenDB, a NoSQL Open Source Document Database.

Get in touch with me:

oren@ravendb.net

+972 52-548-6969

Posts: 7,326 | Comments: 50,669

Copyright ©️ Ayende Rahien 2004 — 2022

Privacy Policy Terms
filter by tags archive
stack view grid view
  • architecture (521) rss
  • bugs (416) rss
  • challanges (103) rss
  • community (334) rss
  • databases (402) rss
  • design (826) rss
  • development (539) rss
  • hibernating-practices (57) rss
  • miscellaneous (589) rss
  • performance (345) rss
  • programming (1017) rss
  • raven (1305) rss
  • ravendb.net (354) rss
  • reviews (181) rss
  • uberprof (40) rss
  • 2022
    • May (9)
    • April (14)
    • March (15)
    • February (13)
    • January (16)
  • 2021
    • December (23)
    • November (20)
    • October (16)
    • September (6)
    • August (16)
    • July (11)
    • June (16)
    • May (4)
    • April (10)
    • March (11)
    • February (15)
    • January (14)
  • 2020
    • December (10)
    • November (13)
    • October (15)
    • September (6)
    • August (9)
    • July (9)
    • June (17)
    • May (15)
    • April (14)
    • March (21)
    • February (16)
    • January (13)
  • 2019
    • December (17)
    • November (14)
    • October (16)
    • September (10)
    • August (8)
    • July (16)
    • June (11)
    • May (13)
    • April (18)
    • March (12)
    • February (19)
    • January (23)
  • 2018
    • December (15)
    • November (14)
    • October (19)
    • September (18)
    • August (23)
    • July (20)
    • June (20)
    • May (23)
    • April (15)
    • March (23)
    • February (19)
    • January (23)
  • 2017
    • December (21)
    • November (24)
    • October (22)
    • September (21)
    • August (23)
    • July (21)
    • June (24)
    • May (21)
    • April (21)
    • March (23)
    • February (20)
    • January (23)
  • 2016
    • December (17)
    • November (18)
    • October (22)
    • September (18)
    • August (23)
    • July (22)
    • June (17)
    • May (24)
    • April (16)
    • March (16)
    • February (21)
    • January (21)
  • 2015
    • December (5)
    • November (10)
    • October (9)
    • September (17)
    • August (20)
    • July (17)
    • June (4)
    • May (12)
    • April (9)
    • March (8)
    • February (25)
    • January (17)
  • 2014
    • December (22)
    • November (19)
    • October (21)
    • September (37)
    • August (24)
    • July (23)
    • June (13)
    • May (19)
    • April (24)
    • March (23)
    • February (21)
    • January (24)
  • 2013
    • December (23)
    • November (29)
    • October (27)
    • September (26)
    • August (24)
    • July (24)
    • June (23)
    • May (25)
    • April (26)
    • March (24)
    • February (24)
    • January (21)
  • 2012
    • December (19)
    • November (22)
    • October (27)
    • September (24)
    • August (30)
    • July (23)
    • June (25)
    • May (23)
    • April (25)
    • March (25)
    • February (28)
    • January (24)
  • 2011
    • December (17)
    • November (14)
    • October (24)
    • September (28)
    • August (27)
    • July (30)
    • June (19)
    • May (16)
    • April (30)
    • March (23)
    • February (11)
    • January (26)
  • 2010
    • December (29)
    • November (28)
    • October (35)
    • September (33)
    • August (44)
    • July (17)
    • June (20)
    • May (53)
    • April (29)
    • March (35)
    • February (33)
    • January (36)
  • 2009
    • December (37)
    • November (35)
    • October (53)
    • September (60)
    • August (66)
    • July (29)
    • June (24)
    • May (52)
    • April (63)
    • March (35)
    • February (53)
    • January (50)
  • 2008
    • December (58)
    • November (65)
    • October (46)
    • September (48)
    • August (96)
    • July (87)
    • June (45)
    • May (51)
    • April (52)
    • March (70)
    • February (43)
    • January (49)
  • 2007
    • December (100)
    • November (52)
    • October (109)
    • September (68)
    • August (80)
    • July (56)
    • June (150)
    • May (115)
    • April (73)
    • March (124)
    • February (102)
    • January (68)
  • 2006
    • December (95)
    • November (53)
    • October (120)
    • September (57)
    • August (88)
    • July (54)
    • June (103)
    • May (89)
    • April (84)
    • March (143)
    • February (78)
    • January (64)
  • 2005
    • December (70)
    • November (97)
    • October (91)
    • September (61)
    • August (74)
    • July (92)
    • June (100)
    • May (53)
    • April (42)
    • March (41)
    • February (84)
    • January (31)
  • 2004
    • December (49)
    • November (26)
    • October (26)
    • September (6)
    • April (10)
Couchbase vs RavenDB Performance at Rakuten Kobo Whitepaper
  previous post next post  
May 26 2010

The down side of porting

time to read 1 min | 83 words

I got to this code as a result of a profiling session (shown below):

image

And here is how I got there:

 

image

Well, the fun part is that by the time I found it, it got fixed :-)

Tweet Share Share 5 comments
Tags:
  • Open Source

  previous post next post  

Comments

Demis Bellot
26 May 2010
09:38 AM
Demis Bellot

Well that and the fact that the API needs to cater for Java's restrictive language features. I find a Java port to be less enjoyable to work with than a first-class C# API without the imposed legacy API.

Grimace of Despair
26 May 2010
10:48 AM
Grimace of Despair

@Demis, OTOH: I favor a succesful Java port, backed by a large community, over a crippled C# implementation with a much smaller one. Lucene.NET wouldn't have been where it is without the plain Lucene. I think opportunity cost is the keyword on this.

Demis Bellot
26 May 2010
11:42 AM
Demis Bellot

@Grimace

If they were the only 2 options, then sure I'd go with something that works and has an active community over one that doesn't any day.

At the same time I would go with a LINQ API over anything that came before it. Comparing LINQ vs the alternates is a good case of how deficiencies in a language effects the expressiveness of an API.

C#/.NET's biggest problem is that it was conceived by Microsoft, that's not to say that Microsoft hasn't done an amazing job, they have its just that most open source developers wont want to touch it with a 10 foot pole. Also I believe some extremists don't want to admit that Microsoft is able to produce superior technology and will choose to believe that the free world always has better tech.

The C#/.NET world and prospective community is still hurting over Ballmers comments of yester-year calling Linux a cancer and threatening that Linux invalidates hundreds of their 'un-disclosed' patents - it's no wonder no one wants to touch tainted technology.

Anyway that's why I like the Mono community, they've evaluated everything out there, dispelled all FUD and chose to implement C# language and .NET Framework from the published open specifications because they think it is the most superior technology available. If we can we should give them all the support that we can as they in turn barrack for a more open C# / .NET and have got Microsoft to publish some open promises:

http://www.microsoft.com/interop/osp/default.mspx

This goes some way to repairing the damage of the past and a more open C# / .NET will I believe lead to a more open and vibrant community. This is one of the reasons why I try to ensure all my software is open source and that it works well on Mono. I hope everyone else does the same.

Frank Quednau
26 May 2010
12:02 PM
Frank Quednau

@Demis

mono support is pretty much the only thing that makes me consider using rake for builds.

Demis Bellot
26 May 2010
12:08 PM
Demis Bellot

@Frank Quednau

Ok Kool, I've never even thought to use Rake as I've always found Nant suitable. But yeah there is definitely room for improvement over an XML language so might be worth a look for my next project :)

Comment preview

Comments have been closed on this topic.

Markdown formatting

ESC to close

Markdown turns plain text formatting into fancy HTML formatting.

Phrase Emphasis

*italic*   **bold**
_italic_   __bold__

Links

Inline:

An [example](http://url.com/ "Title")

Reference-style labels (titles are optional):

An [example][id]. Then, anywhere
else in the doc, define the link:
  [id]: http://example.com/  "Title"

Images

Inline (titles are optional):

![alt text](/path/img.jpg "Title")

Reference-style:

![alt text][id]
[id]: /url/to/img.jpg "Title"

Headers

Setext-style:

Header 1
========
Header 2
--------

atx-style (closing #'s are optional):

# Header 1 #
## Header 2 ##
###### Header 6

Lists

Ordered, without paragraphs:

1.  Foo
2.  Bar

Unordered, with paragraphs:

*   A list item.
    With multiple paragraphs.
*   Bar

You can nest them:

*   Abacus
    * answer
*   Bubbles
    1.  bunk
    2.  bupkis
        * BELITTLER
    3. burper
*   Cunning

Blockquotes

> Email-style angle brackets
> are used for blockquotes.
> > And, they can be nested.
> #### Headers in blockquotes
> 
> * You can quote a list.
> * Etc.

Horizontal Rules

Three or more dashes or asterisks:

---
* * *
- - - - 

Manual Line Breaks

End a line with two or more spaces:

Roses are red,   
Violets are blue.

Fenced Code Blocks

Code blocks delimited by 3 or more backticks or tildas:

```
This is a preformatted
code block
```

Header IDs

Set the id of headings with {#<id>} at end of heading line:

## My Heading {#myheading}

Tables

Fruit    |Color
---------|----------
Apples   |Red
Pears	 |Green
Bananas  |Yellow

Definition Lists

Term 1
: Definition 1
Term 2
: Definition 2

Footnotes

Body text with a footnote [^1]
[^1]: Footnote text here

Abbreviations

MDD <- will have title
*[MDD]: MarkdownDeep

 

FUTURE POSTS

No future posts left, oh my!

RECENT SERIES

  1. Challenge (66):
    06 May 2022 - Spot the optimization–solution
  2. Production postmortem (37):
    29 Apr 2022 - Deduplicating replication speed
  3. Recording (3):
    11 Apr 2022 - Clean Architecture with RavenDB
  4. Answer (10):
    07 Apr 2022 - Why is this code broken?
  5. Request for comments (2):
    10 Mar 2022 - Removing graph queries from RavenDB
View all series

RECENT COMMENTS

  • Greg, I think the point here is not about generic programming but about generic *types*. You focused on examples of proble...
    By Milosz on Modern programming languages require generics
  • Greg, You can have generics in C via `void*`, sure. But there are _costs_ associated with that. There are ways around that...
    By Oren Eini on Modern programming languages require generics
  • If people don't bother to create multiple versions of things like sorting algorithms in languages like C that don't have gene...
    By Greg Hall on Modern programming languages require generics
  • @Oren: I would benchmark C vs. C++ on a complex object that would require C++ overloading of operators <, >, == and !=. In...
    By Gheorghe on Modern programming languages require generics
  • Gheorghe, I didn't do the analysis in this manner. Instead, I ran the code and benchmarked it. I can tell you that there i...
    By Oren Eini on Modern programming languages require generics

Syndication

Main feed Feed Stats
Comments feed   Comments Feed Stats