: 4572 | 108432 | 12322

Rewrite @DBLookup in assembler 
Use this IdeaSpace to post ideas about Domino Designer.

: -29
: 1
: 30
: Domino Designer
: Formula, @Formula
: Mark Demicoli11712 02 Feb 2009
: / Email
Might be a stupid idea because I have no idea how well optimised this critical function is.  But throwing a genius at it might yield a fantastic performance improvement.  Surely IBM has some nutters in there with 2 key keyboards (0 & 1) :)

1) Matt White9265 (02 Feb 2009)
Are you finding @DbLookups not performing well then? Often if you do have problems it's down to view design. Generally I am happy with the @DbLookup, although I would like the limits to be extended, but there's already an idea for that: { Link }
2) Mark Demicoli11712 (03 Feb 2009)
@1: You missed the point. If a lookup in a badly designed view takes 10ms and 5ms in a beautifully designed view, both views would experience a 100% improvement if the @DBLookup function was improved by that factor.
3) Lauri Laanti346 (04 Feb 2009)
I think the @Formula engine was rewritten couple years ago. I would assume that this particular function is pretty well optimized for speed.
4) Urs Meli1619 (04 Feb 2009)
I think, if a user would notice a performance gain in a lookup from 10ms to 5ms, than there is something wrong with your application. Maybee tooo many lookups?
5) Karl-Henry Martinsson1592 (09 Feb 2009)
@3: Damien Katz rewrote the whole @Formula engine in Notes 6: { Link }
I am also sure it is pretty well optimized by now.

@Mark: I never seen any performance issues using @DbLookup, if the application design have been sound. And would it be worth spending the time (both in development and in testing) to address something that is really an application design issue? Throwing resources (more memory, faster CPU, faster drives) at a problem (e.g. a slow database) is not really a good solution, it is better to fix the underlying problem (design) instead.
6) Mark Demicoli11712 (12 Feb 2009)
My understanding is that Notes is written in C which is subject to generic compiler logic. You have a class of programmers that specialise in lower level programming languages such as assembler or machine code. These guys write incredibly optimised instructions for embedded systems that are performance critical. So the same functionality, logically optmised (ie perfectly efficient logic), that compiles to 1000 instructions when written in C and then compiled into machine code, could be written in say 250 instructions if written in machine code. Get the point?
7) Karl-Henry Martinsson1592 (16 Feb 2009)
@Mark: But is that really a big problem? Yeah, perhaps IBM could put a developer on rewriting this one function slightly more optimized for you, but I am sure there are other functions who are much more important. Full round-trip DXL, for example. I never seen any performance problems using @DbLookup in a well design application. Perhaps you should spend a few hours optimizing your application design instead?
8) Ninke Westra1722 (17 Feb 2009)
I'd rather see those retarded limits on return set size removed (or increased significantly.
9) Adeleida Bingham11 (18 Feb 2009)
LOL. Feel like promoting this idea just because it's so funny. (Sorry Mark, no offense) . I honestly thought it was a joke.
10) Mark Demicoli11712 (19 Feb 2009)
This is not a 'my lookups are better than yours' discussion. It's besides the point. An infinitely optimised sports car interior will not make the engine run more efficiently. There may actually already be certain parts of Domino that are written in lower languages than C. Anyone know?

@4: 10ms multiplied by 1000 'simultaneous' operations is 10 second response. 5 seconds if the @Lookup was twice as fast. if we have an agent doing the fabled lookup in this imaginary application and spitting out the result to a browser, the difference to the last processed request is 5 seconds. One onethosand.... Two onethousand.... Three onethousand.... Four onethosand.... Five onethousand.

Again this has nothing to do with developer prowess. A great F1 driver is limited by the performance of the vehicle.

11) Mark Demicoli11712 (19 Feb 2009)
@9: have you heard the one about the Domino to Exchange conversion utility? Command line version. :P
12) Richard Schwartz3723 (07 Sep 2009)
Point 1: Given the the complexities of manually optimizing for modern piplelined and multi-threaded chips, compounded by the fact that IBM supports many different client and server processor chips, it is highly unlikely that IBM's programmers could do a better job than the compilers that have intimate knowledge of each chip's capabilities built in.

Point 2: The performance of @DbLookup will mostly be determined by the performance of the Notes C API routines that it calls to do the database index lookups and all the NSF file i/o required for that. That code has been worked on by incredibly smart programmers for more than 20 years, and it seems highly unlikely that there are any significant performance gains to be made from code optimization. They have, on the other hand, gained performance from significant architectural updates to the ODS, caching algorithms, etc, over the years -- and those sort of things are where the achievable performance gains are likely to continue to come from.
13) Mark Demicoli11712 (07 Mar 2011)
Status changed to Withdrawn


Welcome to IdeaJam™

You can run IdeaJam™ in your company. It's easy to install, setup and customize. Your employees, partners and customers will immediately see results.

Use IdeaJam to:

  • Collect ideas from employees
  • Solicit feedback and suggestions from employees and customers
  • Run innovation contests and competitions
  • Validate concepts
  • Use the power of "crowd-sourcing" to rank ideas and allow the best ideas to rise to the top

IdeaJam™ works with:

  • IBM Connections
  • IBM Lotus Quickr
  • Blogs and Wikis
  • Websphere Portal
  • Microsoft Sharepoint
  • and other applications.

IdeaJam has an extensive set of widgets and API's that allow you to extend and integrate IdeaJam™ with other applications.

Learn more about IdeaJam >>

IdeaJam developed by

Elguji Software Logo