14
\$\begingroup\$

There is currently a suggestion to make a synonym for . I don't think that's right, for two reasons:

  • You can optimize code for several criteria, such as maximum execution speed, minimum code size, minimum memory usage. Optimization is not always about performance.

    (Side discussion: I'm not a fan of the tag either, because I think it is carelessly overused. To force some thought, I believe you should have to choose between , , or . Also, the term "optimization" could refer to the domain of the problem itself, as in the goal of the code is to compute the minimum or maximum achievable value of something.)

  • When performance is really bad, the problem is often that you are using a bad algorithm. The fix is not so much optimizing the existing code (e.g. pulling invariants out of loops), but rewriting the entire solution.

On the other hand, I would like to merge into . However, I am unable to propose such a change while the suggestion is still outstanding, since synonym chains are not allowed. ← This part is .

\$\endgroup\$
  • \$\begingroup\$ I have voted to decline the suggestion, which brought it to -2, so it was actually declined. \$\endgroup\$ – svick Oct 8 '13 at 13:28
8
\$\begingroup\$

Questions about optimizing execution time should use the tag: .

Questions about minimizing memory should use the tag: .


I like the idea of and .

These two have obvious benefits. I think is more clear than (to me, memory is part of performance...), and making them more clear what they mean without reading the description I think is important. I don't think many people read the descriptions... (I don't always... and new users certainly don't)


I don't like the idea of .

For starters, I don't think this is particularly useful. Why does the lines of code matter? Moreover, is refactoring and removing duplicated code ever going to not be mentioned in at least one answer to a question?

And this isn't Code Golf... so we shouldn't really be seeing answers that rewrite code into really silly obfuscated stuff just for the sake of being short.

And how many times would this tag actually even be used?

If the user were asking for something more like reducing the size of the compiled binary file, that might be a different story (perhaps it needs to run on an embedded system with very little storage space?)... anyway, on the whole, I'm not sure this particular tag is very good or useful.


Finally, I believe is being used where one might otherwise use , and to me, these are two extraordinarily different things.

If I wrote some code that involved manual memory management and I'm particularly interested in having that aspect reviewed to make sure I've done it correctly, then I might want to use . Importantly, this tag is for use when you're more concerned about making sure you're managing your memory correctly and optimally ( and might make sense together if you're concerned about the rate at which your memory is allocated or deallocated).

Meanwhile, should be used when not when I'm concerned about how I'm allocating or deallocating my memory, but instead when I'm concerned with how much memory I'm allocating and interested in doing everything feasible to minimize my application's memory footprint.

\$\endgroup\$
  • \$\begingroup\$ Code size optimization is a pretty rare concern these days, and in any case we have an embedded tag. \$\endgroup\$ – 200_success Feb 26 '15 at 23:52
  • \$\begingroup\$ Yes. This please. Let's see a check here so we can begin the relatively large undertaking of cleaning up [optimization]. \$\endgroup\$ – RubberDuck Feb 28 '15 at 18:42
  • \$\begingroup\$ Partially implemented. We now have performance, memory-optimization, and embedded. \$\endgroup\$ – 200_success Mar 25 '15 at 20:35
  • \$\begingroup\$ @200_success when you say it's been partially implemented, what exactly was the action taken? \$\endgroup\$ – RubberDuck Mar 27 '15 at 0:17
  • 1
    \$\begingroup\$ @RubberDuck optimization was made a synonym of performance yesterday. \$\endgroup\$ – 200_success Mar 27 '15 at 0:22
  • \$\begingroup\$ Thank you @200_success. \$\endgroup\$ – RubberDuck Mar 27 '15 at 0:25
6
\$\begingroup\$

Why does have to equal speed improvement?

You have a performance increase when you optimise your design to use less resources. So then time is just a resource and optimizing to use less time is increasing the speed performance. Optimizing to use less memory is increasing the memory performance?

.: Increase in should be a result of

\$\endgroup\$
  • \$\begingroup\$ And even speed improvement isn't clear. Are we trying to minimize execution time? Or are we trying to minimize download time? \$\endgroup\$ – nhgrif Jul 25 '14 at 22:31
4
\$\begingroup\$

I like this thought from @200_success a lot.

To force some thought, I believe you should have to choose between , , or .

The tough part though, would then be initially parsing out the different categories of optimization from the massively overused and stay on top of it consistently by Jamalizing anything that is ported from SO or created with that tag into one of the "sub" tags.

We perhaps could get a few volunteers that know different types of languages to scan through their tags and together. I'd be happy to volunteer for anything SQL related. Thoughts?

\$\endgroup\$
  • \$\begingroup\$ I'm thinking it's going to be a necessary evil and we should target potential [memory-optimization] Qs out of the (now) performance tag. \$\endgroup\$ – RubberDuck Mar 27 '15 at 0:27
2
\$\begingroup\$

and have now been synonymized, with the former as the master. This is also consistent with SO's decision.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .