Re: Slow software
We need to look at why this is so.
I have some ideas
* object-oriented to the point that objects do WAY too much 'just in case'
An object that represents the name of a file does NOT have to open and read the file and figure out what it is UNLESS you need to display an icon or a preview (and then it should be done in background on demand).
Mate and Gnome standard 'open file' dialog box is guilty of this, as are common dialog boxen on Windows
* Just because you can, does not mean you should
Unnecessary UI "eye candy", typical for websites that use bloatware javascript libs
Using a web-browser based UI for something that really needs a native interface.
allowing applications to eat RAM for cache and do garbage collection whenever they FEEL like it, thereby causing OTHER applications to run slowly or swap too much. That would be YOU, Chrome, Firefox.
* use of OS memory allocator rather than sub-allocation for tiny little chunks of RAM.
Kinda self-describes
* Use of C++ objects that use 'new' with pointer members, rather than the actual stored type, for non-arrays
Lest we forget, the constructor will get called if you declare a member as a class rather than a class pointer, and you will skip an extra 'malloc' and instead do one for the entire class and all of its members, all at once
* Excess reliance on exception handling and unwinding of things
What it says on the tin. Kernel code often has a 'goto error_exit' where the 'error_exit' label has a cleanup section for managing all of the unwinding and freeing up resources. Better, and more efficient. 'goto' may have 4 letters, but it is NOT a '4 letter word',.
* Use of garbage collection where reference counts would make a LOT more sense.
Objects that clean themselves up when the ref count goes to zero can persist as long as they need to, even across threads [if you design them properly]. Remember OLE 2.0 ? It is based on other things found in the UNIX/Linux world (CORBA was one as I recall) and the ref count is the smartest part of it.
* BLOATWARE "Rapid Development" systems (think UWP)
They add layers and are not always very efficient
* Anything involving '.NOT' or NodeJS
'Nuff said I think
* Trying to use Python as if it were C or C++
Python is a useful wrapper but performs poorly in a loop. I recently used Python to display an animated wallpaper until you touch the screen, then it exits but tells the main application you did it so that it changes its behavior with blinky lights. Maybe 20 lines of Python, the rest managed by GTK and standard utilities
NOT all inclusive, but a good start I'd say...