Hacker Newsnew | past | comments | ask | show | jobs | submit | the_hoser's commentslogin

One of the biggest optimizations it offers is shrinking the size of the classes by obfuscating the names. If you're obfuscating the names anyway, there's no reason that the names have to be the same length.

"hn$z" is a heck of a lot smaller than "tld.organization.product.domain.concern.ClassName"


So we're not talking about runtime performance, but some minor improvement in loading times? I assume that once the JVM has read the bytecode, it has its own efficient in-memory structures to track references to classes rather than using a hash map with fully qualified names as keys


Proguard was heavily influenced by the needs of early Android devices, where memory was at a real premium. Reducing the size of static tables of strings is a worthwhile optimisation in that environment


Okay but we're talking about Minecraft on desktops and laptops, where the relevant optimizations would be runtime performance optimizations, no?


Probably, but proguard tends to bundle the whole lot together


Even a hash map with fully qualified names as keys wouldn't be so bad because Stirng is immutable in Java, so the hash code can be cached on the object.


The names need to be stored somewhere because they are exposed to the program that way


They have to be stored somewhere, but they don't have to be what the JVM uses when it e.g performs a function call at runtime. Just having the names in memory doesn't slow down program execution.


At runtime this is going to be a branch instruction yes


Yeah in some ways the obfuscation and mappings are similar to minification and sourcemaps in javascript.


And minification in JavaScript only reduces the amount of bytes that has to be sent over the wire, it doesn't improve runtime performance.


According to the v8 devs it also can increase parsing performance

> Our scanner can only do so much however. As a developer you can further improve parsing performance by increasing the information density of your programs. The easiest way to do so is by minifying your source code, stripping out unnecessary whitespace, and to avoid non-ASCII identifiers where possible.

https://v8.dev/blog/scanner


Sure, but that's also just in the category improving loading a bit. It doesn't have anything to do with runtime performance.


And it puts a red "M" hat on if you search for Mario.


An art lost to the ages. Granted, their purposes were so different than they are today. Most of them would be replaced by a social media presence today.


It's probably that nobody with the ability to pull it off really cares enough to try. Lots of obscure devices never get jailbroken.


The problem is that in order to attract developers to create those apps, you need users ready to buy those apps. The price of the Vision Pro is still the ultimate limiting factor for its success.


That's a whole lot of airtime for an autobiography. Hubris, much?


No


You presume that the people in charge have the best interests of the government in mind when they make their decisions.


This is it 100%. Zuckerberg and Musk aren't doing anything more awful than Page or Brin, but they're smart enough to understand that it's WAY easier to get away with sketchy stuff when you're not someone that the average person knows about. There's a huge amount of value in keeping your mouth shut.


Now?


That was exactly my reaction.

They'd been tossing with being evil for a while, but I feel like Google Plus was their New Coke moment, where they momentarily went too far, then backed off to the "classic" Google, while secretly replacing sucrose with the worse testing fructose.

Before then, Google was an advertising company with a bunch of side projects to increase user interaction, so advertisers has somewhere to show ads.

Since then, every part of Google has been working to lock in the user base while trying to extract as much as possible from them.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: