Is there always performance?

Since I am a Lone Developer, I have to think about all the aspects of the systems that I work on. Recently, I have been thinking about the performance of my two websites and how to improve it. Sites like StackOverflow declare "performance is a feature." However, "premature optimization is the root of all evil," and none of my clients have yet complained about the performance of sites.

My question is: is performance always important? Should performance always be a function?

Note. I do not think this question is the same as this one , because this poster asks when to consider performance, and I ask if the answer always answers this question, and if so, why. I also do not think that this question should be CW, since I believe that there is an answer and reasoning for this answer.

+6
performance optimization
source share
15 answers

Adequate performance is always important.

The absolute highest possible performance is almost never important.

You should always monitor performance and be aware of everything that would be unreasonably suboptimal what you are doing (especially at the design / architecture level), but this is not the same as micro-optimization of each line of code.

+27
source share

Performance! = Optimization.

Performance is really a function, but premature optimization will cost you time and will not produce the same result as when optimizing parts that need optimization. And you cannot really know which parts need optimization until you can actually comment on something.

Performance is a feature that your customers will not tell you about if it is missing, unless it is very painfully slow, and they are forced to use your product. Existing customers may report this at the end, but new customers will simply not worry about whether performance is required.

You need to know what performance you need and articulate it as a requirement. Then you must fulfill your own requirement.

+8
source share

Keep performance in mind , but given your situation, it would not be wise to spend too much time on it.

Performance is important, but it is often difficult to find out where your bottleneck will be. Therefore, I suggest planning to devote some time to this function when you have something to work with.

Therefore, you need to set up metrics that are important to your customers and to you. Store and analyze these measurements. Then evaluate how much and how much time it will take to implement. Now you can strive to get bang for you buck / time.

If this is a website, it would be wise to note the size and performance of your page using Firebug + yslow and / or Google page speed. Again, find out about a small site like yours and things that apply only to yahoo and google.

+5
source share

This quote “the root of all evil” is almost always misused and misunderstood.

Developing an application to work well can be done mainly with good design. Good design! = Premature optimization, and completely ridiculous to get away from writing shitty code and blow off design work like a bad waste. Now I'm not specifically talking about you here ... but I see that people do this a lot.

This usually saves you time to do a good job on design. If you emphasize this, you will improve it ... and get faster and faster when writing systems that work well from the start.

Understanding which access structures and methods work best in certain situations is key here.

Of course, if the application becomes really massive or has insane speed requirements, you may find yourself doing cheated optimizations that make your code more ugly or complicated to maintain ... and it would be wrong to do these things before you need to.

But this is absolutely NOT the same as trying to understand and use the right algorithms or data patterns or something like that.

Your users will probably not complain about poor performance if tolerable. Perhaps they did not even know that it could be faster. Responding to complaints as the main driver is a poor way to work. Of course, you need to address the complaints that you receive ... but their lack does not mean that there are no problems. The fact that you are considering improving performance is a bit of an indicator. Is it just a whim or is some part of you telling you what should be better? Why did you decide to improve it?

Just don't go crazy doing unnecessary things.

+5
source share

Jacksons optimization rules:

Rule 1. Do not do this.

Rule 2 (for experts only). Do not do this yet, that is, until you have a completely clear and unoptimized Solution.

-M. A. Jackson

Extracted from code Complete 2nd edition.

+4
source share

To give a generalized answer to a general question:

Do the work first, then make it right , then make it quick .

http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast

This poses a more constructive perspective: "premature optimization is the root of all evil."

So to John Skeet's parallel answer, adequate performance (as part of something working and right) is always important. Even then, it can often be solved after other functions.

+4
source share

Jon Skeets “adequately” calls him, with an additional provision, which you still do not know for the library, which is adequate, therefore it is better to make a mistake on the reliable side.

This is one of many bets that you should not be mistaken, but the quality of your application is largely determined by the weakest link.

Productivity is definitely always important in a certain sense - maybe not the one you have in mind: precisely at all stages of development.

In Big O notation, what is inside the brackets is largely determined by the design - component isolation and data storage. Choosing an algorithm will usually only be the best / worst behavior (unless you start with explicitly non-standard algorithms). Code optimization will mainly affect a constant factor that cannot be neglected either.

But this is true for all aspects of the code: at any stage you have a good chance to fail any aspect - stability, maintainability, compatibility, etc. Performance must be balanced so that no aspect remains.

+2
source share

In most applications, 90% or more of the execution time is spent 10% or less of the code. Usually these 10% are of little use in optimizing another code.

+1
source share

How important performance is depends a lot on what you do.

For example, if you are writing a library that can be used in any environment, it is unlikely to ever have too much performance. In some environments, a 10% performance advantage may be a core feature for the library.

If you, OTOH, write an application, there is always a point where it is fast enough. Users will neither understand nor care about whether pressing the button responds within 0.05 or 0.2 seconds - even though the coefficient is 4.

However, it is always easier to get working code faster than working quickly with the code.

0
source share

performance is only important if it takes less time to improve performance than the total time that users save.

the result is that if you are developing something for millions ... yes, it is important to save time. if you code a tool for your own use ... it can be more of a problem than it costs to save a minute or even an hour or more.

(this is clearly not a rule set in stone ... there are times when performance is really critical, no matter how long it takes to develop)

0
source share

There should be a balance in everything. Cost (or development time) versus performance, for example. More performance = more value. If the requirement of the system under construction is high performance, then the cost should not matter, but if the cost is a factor, then you optimize within reasonable limits. After some time, your return on investment suffers from the fact that higher productivity does not bring more returns.

0
source share

The importance of performance is IMHO, strongly related to your problem. If you create a site with the expectation of a heavy load and a large part of the processing on the server side, then you may need a little more time for performance (otherwise your site may be unusable). However, for most applications, the time taken to optimize your website performance will not pay off - users will not notice the difference.

So, I think this breaks down to this:

Will users notice improvements? How does this improvement compare to competing sites?

If users notice And the improvement will be enough to distinguish you from competitors - performance is an important function - otherwise - not so much. (By the time - I do not recommend completely ignoring it - you do not want your turtle site to continue).

0
source share

Not. Fast enough good enough.

However, it is not necessarily true that your client ideas about "fast enough" should surpass your own. If you think that this is fast enough, but your client is not, then you need to adapt your ideas to yours. But if you think that the client is fast enough, and you should not take your opinion seriously, there are none (since you may be more aware of the standards of work in the wider world).

0
source share

Not. Performance is not important.

Lack of performance is important.

0
source share

Productivity is something you can start from the beginning, not the end. Over the past 15 years, I have worked in engineering and technical facilities, and the reason for most of the project’s failures is the lack of performance requirements. Several posts noted "fast enough" as an observation and whether your expectations are in line with your customers' expectations, but what about when you have a situation with your client, your development team, your platform development team, your testing functional group, your testing team performance and your operations team have different expectations regarding performance, none of which were dedicated to the stone and measured against. Bad Magic to be sure.

Grab these expectations from your customers. Take them to a specific, objective, measurable requirement that you can evaluate at every stage of the production of your software. Expectations can be uneven: one part of your application / code should be faster than the others, and each client will not have the same expectations regarding what is considered acceptable. Having this information will force you to confront design and implementation decisions that you may have missed in the past, and this will lead to a product that better meets the expectations of your customers.

0
source share

All Articles