Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Decreased performance...

 
Justin Russo
Ranch Hand
Posts: 77
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
isn't adding layers to abstract things kind of decreases performance. Although it is considered good oops but downside of it is performance problems..

I am talking about all these frameworks.. struts,wicket etc..

Can some one give their kind opinions..

JR

[ April 27, 2008: Message edited by: Justin Russo ]
[ April 27, 2008: Message edited by: Justin Russo ]
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13074
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
<BasicTruth>
Designers make various compromises according to their needs.
</BasicTruth>

IF your needs are getting something running quickly - or - being compatible with existing code - or - making use of the expertise of team members, you may find yourself using a framework you would not ordinarily use.

You can certainly find pleny of argument about whether framework X, Y or Z is overly complex or slow. This keeps bloggers busy.

So many of our currently popular frameworks/languages/toolkits come from programmers striking out on their own to build a better one.

Don't assume that adding layers of abstraction is always bad, sometimes it illuminates instead of obfuscates.

Bill (wow, I got to use obfuscate in a sentence)

 
Ilja Preuss
author
Sheriff
Posts: 14112
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Using abstractions actually has two positive effects on performance: it accelerates development, thereby leaving more time for profiling and optimization, and it makes it easier to reason about the code, thereby also making it easier to find bottle necks and to remove them.
 
Pat Farrell
Rancher
Posts: 4678
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Ilja Preuss:
(1) it accelerates development, thereby leaving more time for profiling and optimization, (2) easier to reason about the code


In nearly all application efforts, the precious resource is developer time. Using abstraction can get the code written faster.

Once it works, its much easier to see if its fast enough. If needed, you can then do performance anaylysis.

Premature optimization, being the root of all evil.
 
Nicholas Jordan
Ranch Hand
Posts: 1282
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Justin Russo:
(...)
Can some one give their kind opinions..

JR


I go with Bill here, what I do - which evolves naturally when using the positioning that Mr. Brogden describes is go read the code the fancy tools produce. Usually it is code written from thousands and tens of thousands of hours of work brought together by someone who is degreed in the field. Thus it provides extremely good sample code for study. I never actually use the fancy tools because they are slow as tree sap on a fouty degree morning.

The citation from Donald E. Knuth comes from a time when machines were rare and wasting a lot of machine time trying to tightly tweak code for fast-path was a super-critical skill. Try to program in the Connected Limited Device Configuration (CLDC) if you want a taste of it. If you can get some code on the page by contemplating super-tweaking, that is today a differing environment from programming on a machine that has the os bootstrap loader on the first two cards of an eighty colum card and runs in 64-k of memory that consists of wire-wrapped pins.

There are others that agree with you.

Define performance.
 
Jimmy Clark
Ranch Hand
Posts: 2187
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Performance is a non-technical characteristic of a software application. It is defined in a context. To speak generally about performance without a context is not effective, in my opinion.

The primary performance metrics of most business software are the number of user requests or the number of transactions processed in specified time period. For example, 1000 transactions per second, or, 5000 users per hour. These high-level metrics are supported by others such as page rate, response rate, peak load, concurrent load, etc.

When we get these metrics, then we can analyze what performance means for a specific application.

Other software types, such as the control software in an automobile transmission, have a different set of metrics used for measurment. So, performance discussions for this software type will be different than one for business software and/or web-based software.
[ April 30, 2008: Message edited by: James Clark ]
 
Nicholas Jordan
Ranch Hand
Posts: 1282
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by James Clark:
(...snip...)Performance is a non-technical characteristic of a software application. It is defined in a context. To speak generally about performance without a context is not effective, in my opinion.


Correct. A company may want to spend little time and money on it. It the team can deliver that, all other performance issues are not performance issues.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic