Is there a word/phrase for "unperformant"?
As a software engineer, I need to sometimes describe a piece of code as something that lacks performance or was not written with performance in mind.
Example:
This kind of coding style leads to unmaintainable and unperformant code.
Based on my Google searches, this isn't a real word. What is the correct way to describe this?
EDIT
My usage of "performance" here is in regard to speed and efficiency. For example, the better the performance of code the faster the application runs. My question and example target the negative definition, which is in reference to preventing inefficient coding practices.
Solution 1:
This kind of coding style leads to unmaintainable and unperformant code.
In my opinion, reads more easily as:
This coding style leads to unmaintainable and poorly performing code.
The key to well-written documentation and reports lies in ease of understanding. Adding poorly understood words such as performant decreases that ease.
In addressing the use of such a poorly described word as "performant", I came across the following lovely excerpt:
"The unlovely language of this unreal world floats along on a linguistic sea of rollouts, step changes, public domains, fit for purposes, stakeholder engagements, across the pieces, win-wins, level playing fields and going forwards," the report says.
I believe this wholeheartedly encapsulates the why's and wherefore's of not using vernacular that is imprecise, vague, and designed to confuse.
Sir Humphrey Appleby, in 1986, put it fairly succinctly when he stated:
‘Sometimes one is forced to consider the possibility that affairs are being conducted in a manner which, all things being considered and making all possible allowances is, not to put too fine a point on it, perhaps not entirely straightforward.’
See http://www.theguardian.com/society/joepublic/2009/nov/30/english-language-misuse and potentially, http://grammar.about.com/od/words/a/Doublespeak-Soft_Language-Gobbledygook.htm for more examples of why it is important to speak plainly and in a manner that allows ease of understanding.
itshambles.wordpress.com has an excellent piece on the vagaries of wholly unknown and unknowable language. The writing is both informative, and quite funny, and obviously well worth the read.
Solution 2:
The word "performant", meaning "performs adequately or well" appears to be a relatively recent coining. Some people object to its use as it is not clear about what kind of performance it is referring to.
If you accept the word performant as a valid, useful word, you will then be dismayed to find that there isn't really a standard for its inverse. However, you are probably safe using non-performant as it follows fairly typical rules for creating negative words. Note that non-performant is even more non-standard than performant, and neither word carries much specific meaning. It may be better for you to be more explicit about what kind of performance is lacking.
Solution 3:
I guess you could simply say inefficient code instead of unperformant.
Solution 4:
I'm a programmer. Here are the ways I would describe that kind of code:
The code has poor performance. The code is slow. / The code runs slowly. The code has high overhead. (You may specify time and/or memory overhead) The algorithm is needlessly expensive. The code is not optimized for performance. The code does not scale well.
Solution 5:
I would argue that English speakers will generally be able to understand "unperformant". If we break the word apart.
- un-: the opposite of
- perform: do something
- -ant: characterized by
Together unperformant basically means that X is the embodiment of not doing something (well).
The problem I see is the word relies on an unspecified and unqualified meaning of the word "perform". With my background I would interpret your statement
This kind of coding style leads to unmaintainable and unperformant code.
as meaning:
The way the developer is writing this piece of code makes it prohibitively expensive to maintain and the code is needlessly slow to execute.
- Unmaintainable: prohibitively expensive (in terms of time/resources) to maintain.
- Unperformant: needlessly slow (in terms of execution time)
That may or may not be your intention. Personally, when my code is performing well I think of it as executing quickly. This isn't always the case:
- Data Modelers/Machine Learning people might think the predictions aren't good enough
- Embeded developers, or other developers constrained by memory, might think the code is inefficient with memory.
- Game developers might think the sprites are taking too long to render.
- Security experts might think your password hash algorithm is too fast.
- Cryptology developers might think your cipher is weak.
- Developers trying to scale their work across machines/processors/cores may think it parallelizes poorly.
- Machinists programming their CNC mill with M-codes might think the cuts are being made and/or ordered inefficiently.
- A developer of a financial application might think that not enough significant digits are maintained.
- Insert programming constraint here that isn't being respected.
Overall I think it is better to say what is "unperformant" about X or why X is "unperformant." That way the problem is clear, and you can side-step whether or not "unperformant" is a real word. In my opinion without context simply "unperformant" is too vague to be useful. Presumably you're trying to help the other person solve their problem, so it behooves you to frame the problem as clearly as possible.