where are the performance bottlenecks

As you may know I handle development for the IntelliCAD consortium as well as for the ITC member bricscad. This is for ITC: The ITC currently is putting a lot of effort in making sure that what exists also works correctly. Serious performance problems are part of that. There is the slow behaviour in paperspace, which is mended in the code but not yet in the release. General redraw performance will improve too.There is the impact of system variables SORTENTS, HYPERLINKOPTIONS and OSMODE. There is the possibility to suspend regens in icad explorer. There is slowness when selecting a large amount of entities(fixed in the current code). My question to you now is about performance. Please mention real-life cases where performance really hurts. We're not going to do general performance optimisation yet, just take on some operations where slowness is really annoying.This could be a specific drawing or a piece of lisp.If an operation is slow but you can live with it, then it'll have to wait, because reliability has a higher priority.thanks,sander

Comments

  • Sander,It's very refreshing to see the Intellicad developers being pro-active in looking for directions for improvements. My use of Intellicad is much less intense than many on this newsgroup (mostly creating 2d drawings from 3d models) but there are a couple of situations where I find the performance to always slow down. 1/ When true type fonts are used editing slows way down and becomes somewhat hard to predict. I know that many will suggest sticking to Acad type fonts but for presentation type drawings I like to use the same fonts as the non-CAD materials. Other drawing programs seem to be able to deal with TT fonts so I don't think its impossible.2/ This is less a performance problem than a behaviour problem. I think you alluded to it in your post: It would be really great for me it Intellicad had the OPTION of automatically refreshing if not regen-ing after each editing event. I realize that this could be a big problem with huge files or slow processors, but I usually have relatively small files and a reasonable processor. Also, as above, I have other drawing and modelling programs that are able to keep pretty well keep the screen refreshed as I work. Please don't say that I should just get in the habit of manually refreshing. There are always work arounds but you are talking about improvements.I gather you aren't asking about bugs but improvements to the core system. I don't know whether this counts but the way 3d is interfaced is pretty difficult to use compared to more intuitive and "manuverable" interfaces. I suggest you look at McNeel's "Rhino". After using it I have no interest in trying to deal with the ICAD/ACAD 3d interface. Though it was designed as a 3d nurbs modeller, I'm afraid to say, it's faster and more stable at 2d CAD drawing than Intellicad (although lacking many CAD features like paperspace, Xref's,etc).I don't know how wedded you are now to being exactly equivelent to Autocad. Rhino actually started life as an attempt at an AutoCAD plugin but became a stand-alone and now feels free to drop whatever aspect of the AutoCAD style of interface they want while keeping that which actually makes sense in 2002. I suggest you do the same.Sorry for being so long winded. I'm sure you will get other replies that are more specific than mine!Nick

  • Lisp in general is slow. One thing I have been wondering about is why the ENTMOD functions in Intellicad do not outperform their respective COMMAND functions (e.g. for toggling a layer state). In Autocad, using entmod will speed up an operation 10 or more times. I've had to give up on a few routines because of this.Also, how about a vertex count check before the flyover snap starts working on an area containing multiple vertices. If, by accident the cursor hovers over an area containing a lot of vertices, it can hang my system for a long time.

  • We have all had the same fly over problem. The hang ups usually last around 30 sec but have run over 2 min. Very bad.

  • Yes with the snaps delays, mostly with "intersection" snap when there are large numbers of polyline entities.

  • Here is a test script I ran on a PentII 450MHz 128M to comparecompletion times against AcadLT98 with the AceLT Lisp enabler.I tested Bricsnet Pro V.2.2.0025. (Tildes are used in the scriptto indicate where spaces are required...each one should bereplaced with a space character, if you want to run it)rectang~1,-0.5~2,0.5circle~1.5,0~.5array~allr~1~10~1.5array~allp~0,0~360~~yzoom~eThe results were: ACLT98=2.52 sec.-vs- ICAD=8.20 sec.When I doubled the number of circles and squares to 20 (in thethird line of the script), the results changed drastically.In the BIGGER test: ACLT98=4.72 sec.-vs- ICAD=25.03 sec.Repeating the BIGGER test on an AMD Athalon 1.4GHz 256M withACLT98 against Cadopia ICAD Pro 2000.The results were: ACLT98=1.34 sec.-vs- ICAD=3.47 sec.There is probably a better test but here you can see how ICADbehaves when doubling file size then doubling ram with abouttriple the processor speed. In my opinion, ACLT98 with the Lispenabler is approximately an equivalent product to ICAD2K...giving a balancing effect to the pros and cons.

  • Thinking of performance in terms of quantity and quality, my preference is nearly always for quality.After a year of using icad and 6 months of intensively learning lisp and applying it in developing useful applications, I have had some satisfactions. However, the performance of the presentation of lisp in icad help, in terms of what works and what doesn't, could be improved and clarified for the benefit of the knowledge and information to be clearly transfered to the user.An example of what I think is a problem is when good code results in a clearly incorrect result. If a cons is supposed to occur once in code but the outcome shows it occurred twice w/ the result of crashing a routine that is known to work otherwise on fewer 3d points (43 vs 62). I have to seriously question my use of time to perhaps arrive at some place where I can confidently show other people what can be accomplished w/ icad and the application of lisp. Regards

  • the flyover - polyline intersection case is indeed an excellent example of an operation that is 10-100 times too slow. Intersections are much heavier calculations, because of the combinatorics.The entmod case is good too. Thanks. Any more specific cases? Like a sample of a small drawing that redraws remarkably slow?sander

This discussion has been closed.