• 2 Posts
  • 73 Comments
Joined 1 year ago
cake
Cake day: January 29th, 2024

help-circle

  • They’re downloaded somewhere under /var/snap and by default a snap only has access to a limited set of directories - one under /var/snap for system-wide data (generally used by snaps that run services like cups or MySQL) and one under ~/snap for each user. When you snap remove an app, it bundles that up into a file that’s kept for a while in case you reinstall, but it won’t if you use --purge.

    Obviously many apps request access to other places (such as non-hidden directories in your homedir) so they can read or write stuff, but that’s down to the app to then behave correctly (same as with any other packaging system).














  • It’s all about trade-offs. Here are a few reasons why one might care about performance in their Python code:

    1. Performance is often more tied to the code than to the interpreter - an O(n³) algorithm in blazing fast C won’t necessarily perform any better than an O(nlogn) algorithm in Python.
    2. Just because this particular Python code isn’t particularly performance constrained doesn’t mean you’re okay with it taking twice as long.
    3. Rewriting a large code base can be very expensive and error-prone. Converting small, very performance-sensitive parts of the code to a compiled language while keeping the bulk of the business logic in Python is often a much better value proposition.

    These are also performance benefits one can get essentially for free with linter rules.

    Anecdotally: in my final year of university I took a computational physics class. Many of my classmates wrote their simulations in C or C++. I would rotate between Matlab, Octave and Python. During one of our labs where we wrote particle simulations, I wrote and ran Octave and Python simulations in the time it took my classmates to write their C/C++ versions, and the two fastest simulations in the class were my Octave and Python ones, respectively. (The professor’s own sim came in third place). The overhead my classmates had dealing with poorly optimised code that caused constant cache misses was far greater than the interpreter overhead in my code (though at the time I don’t think I could have explained why their code was so slow compared to mine).